【发布时间】:2011-08-21 15:03:58
【问题描述】:
我有这个用于验证电话号码的正则表达式
^(\+?|(\(\+?[0-9]{1,3}\))|)([ 0-9.//-]|\([ 0-9.//-]+\))+((x|X|((e|E)(x|X)(t|T)))([ 0-9.//-]|\([ 0-9.//-]+\)))?$
我从我的 C#/vb 库中挖出它,现在我想将它翻译成 javascript。但它有语法错误(我怀疑这是由于 // 字符)。我的尝试:
$IsPhone = function (input) {
var regex = new window.RegExp("^$|^(\+?|(\(\+?[0-9]{1,3}\))|)([ 0-9.//-]|\([ 0-9.//-]+\))+((x|X|((e|E)(x|X)(t|T)))([ 0-9.//-]|\([ 0-9.//-]+\)))?$", "");
return regex.test(input.trim());
};
alert($IsPhone("asd"));
【问题讨论】:
-
您能否提供一些有关您的表达式试图匹配的内容的上下文?这将使调试更容易。
-
你有没有试图避开斜线?
-
这是什么? “找不同”的游戏?无论如何,如果是语法错误,我会尝试使用 JSLint。
-
为什么还需要双斜线? AFAICS,他们在一个字符类中,所以应该只有一个。
-
我猜你想写
[ 0-9./-]而不是[ 0-9.//-](把它写两次没有任何意义,并且可能导致正则表达式有缺陷)
标签: javascript regex syntax comments