我有一个JavaScript正则表达式来匹配电话号码:netcore
。我希望它不匹配带有双连字符的字符串,但它匹配它们。
例如,/^(?!-{2}).*[0-9\-]{10,20}[0-9]$/
匹配此正则表达式。我试图逃避像9999-9999111999--9
这样的连字符,但仍然没有成功。这种行为的原因是什么?我错过了什么吗?
答案 0 :(得分:0)
试试这个正则表达式:
/^(?!.*--).*[0-9\-]{10,20}[0-9]/
您要使用的负面预测是?!.*--
,它表示顺序中的两个连字符永远不会出现在输入中的任何位置。您当前的前瞻声明两个连字符在字符串的最开头没有按顺序出现,但它在其他任何地方都没有这样的限制。
作为另一个评论,我质疑.*
在你的模式开始时是否真的有意义。这似乎对我来说太开放了,几乎浪费了其他人用来制作正则表达式专注于某些电话号码的努力。