在A comprehensive regex for phone number validation中,接受的答案包含许多注释。 @jcmcbeth发表的评论之一建议使用以下简单正则表达式来获取用户提交的电话号码的数字:
string.replace("[^\d+!x]", "")
带有此建议的正则表达式的注释之后,立即有另一个提问者询问
why the !x part?
,然后在下一个注释中回答The !x is there to keep any "x" character from getting stripped
。这对我来说很有意义,除了感叹号
!
。在查看正则表达式中的字符类的文档时,我看不到感叹号是一个特殊字符,在我看来x
似乎不需要在其前面有特殊字符。另外,从链接问题的讨论中,我看不到任何表明感叹号可能是电话号码的一部分的注释(这将解释它包含在否定字符类中)。有人可以向我解释为什么会出现感叹号吗?谢谢。
最佳答案
您完全正确,x
就足够了。 !
仅与字符类内部或外部的文字!
匹配。它具有任何特殊含义的唯一地方是当它是否定超前或否定超前的一部分时。