8

电话号码验证的综合正则表达式中,接受的答案有许多评论。@jcmcbeth 的其中一条评论建议使用以下简单的正则表达式来获取用户提交的电话号码的数字:

string.replace("[^\d+!x]", "")

在使用这个建议的正则表达式的评论之后,另一个提问者立即提出why the !x part?,然后在下一条评论中回答:The !x is there to keep any "x" character from getting stripped

这对我来说很有意义,除了感叹号!。查看正则表达式中字符类的文档,我没有看到感叹号是一个特殊字符,而且在我看来,它x前面不需要一个特殊字符。此外,从链接问题的讨论中,我没有看到任何评论表明感叹号可能是电话号码的一部分(这将解释它包含在否定字符类中)。

有人可以向我解释为什么会出现感叹号吗?谢谢。

4

2 回答 2

7

你完全正确,x这就足够了。 !只匹配文字!,在字符类内部或外部。它具有任何特殊含义的唯一地方是它是负前瞻或负后瞻的一部分。

于 2012-04-26T21:01:30.460 回答
-3

肯定 的[^\d+!x] 意思是“NOT '\', NOT 'd', NOT '+', NOT'!'和 NOT 'x'”。

[ ]是一个字符组。

[^ ]否定字符列表。

于 2012-07-06T19:11:33.827 回答