plsの誰かが次のコードを説明できますか?たとえば、なぜ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.
したがって、この正規表現は、正確に10桁(およびその他の数字以外の任意の数の文字)を含む任意の文字列と一致します。
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