为什么另一个涉及电话号码REGEX的StackOverflow帖子中的感叹号?

Dan*_*aum 8 regex

用于电话号码验证的综合正则表达式中,接受的答案有许多注释.其中一个意见的,由@jcmcbeth,提出下面这个简单的正则表达式用来获取用户提交的电话号码的数字:

string.replace("[^\d+!x]", "")
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ala*_*ore 7

你是对的,x这就足够了. !只是匹配文字!,在字符类内或外.唯一具有任何特殊意义的地方是它是消极前瞻或消极外观的一部分.