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



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

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

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

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

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

你是绝对正确的,x就足够了。 !只是匹配文字!,在字符类内或外。 它唯一具有特殊意义的地方是当它是消极前瞻或消极后视的一部分时。

当然[^d+!x]的意思是"不是'',不是'd',不是'+',不是'!',不是'x'"。

[ ]是一个角色组。

[^ ]否定字符列表。

最新更新