如何匹配没有两个连字符的字符串与JavaScript正则表达式?

时间:2017-09-22 13:07:15

标签: javascript regex regex-lookarounds

我有一个JavaScript正则表达式来匹配电话号码:netcore。我希望它不匹配带有双连字符的字符串,但它匹配它们。 例如,/^(?!-{2}).*[0-9\-]{10,20}[0-9]$/匹配此正则表达式。我试图逃避像9999-9999111999--9这样的连字符,但仍然没有成功。这种行为的原因是什么?我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

试试这个正则表达式:

/^(?!.*--).*[0-9\-]{10,20}[0-9]/

您要使用的负面预测是?!.*--,它表示顺序中的两个连字符永远不会出现在输入中的任何位置。您当前的前瞻声明两个连字符在字符串的最开头没有按顺序出现,但它在其他任何地方都没有这样的限制。

作为另一个评论,我质疑.*在你的模式开始时是否真的有意义。这似乎对我来说太开放了,几乎浪费了其他人用来制作正则表达式专注于某些电话号码的努力。