你们中的任何人都可以解释以下代码吗?例如,为什么使用 D,d?
NOT(REGEX(Phone, "\\D*?(\\d\\D*?){10}"))
由于 Java 的字符串转义规则,使用双反斜杠。纯正则表达式意味着:
\D*? # Match any number of non-digit characters (the "?" is useless here)
( # Match...
\d # a single digit
\D*? # optionally followed by any number of non-digits (again, useless "?")
){10} # Repeat the previous group 10 times.
所以这个正则表达式匹配任何正好包含十位数字(加上任意数量的其他非数字字符)的字符串。
如果您在Salesforce中使用示例中的 REGEX ,它是没有用的。它匹配“this1234567890that”,其中“this”和“that”可以是任何值。我用: NOT( REGEX(Phone, "\([0-9]{3}\) [0-9]{3}-[0-9]{4}|\d{10}")) 来完成期望的行为。
我的版本翻译为:
\\( # Match '('
[0-9]{3} # Match 3 digits
\\) # Match ')' followed by a space
[0-9]{3} # Match 3 digits
- # Match hyphen
[0-9]{4} # Match 4 more digits
|\\d{10} # or match 10 digits instead of all the previous