0

plsの誰かが次のコードを説明できますか?たとえば、なぜD、dが使用されるのですか?

NOT(REGEX(Phone, "\\D*?(\\d\\D*?){10}"))
4

2 に答える 2

3

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桁(およびその他の数字以外の任意の数の文字)を含む任意の文字列と一致します。

于 2012-10-25T09:36:39.390 に答える
0

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
于 2012-10-26T14:55:49.047 に答える