我有一个正则表达式匹配的用户名(其功能在PHP中使用preg_match
):正则表达式不一样在PHP
/[a-z]+(?(?=\-)[a-z]+|)\.[1-9][0-9]*/
该图案匹配的形式的abc.124
,abc-abc.123
等用户名
然而,当我把这个给JavaScript:
var re = new RegExp("/[a-z]+(?(?=\-)[a-z]+|)\.[1-9][0-9]*/");
我收到一个语法错误:
SyntaxError: Invalid regular expression: /[a-z]+(?(?=-)[a-z]+|).[1-9][0-9]*/: Invalid group
的(?(?=\-)[a-z]+|)
是说,如果[a-z]+
后,我们看到了-
然后断言[a-z]+
是后否则,比赛什么都没有。这一切在PHP中都很好用,但是我对JavaScript有什么不同?
编辑:我很欣赏的意见,现在我对此还有最后一个问题:
var str="accouts pending removal shen.1206";
var patt= new RegExp("/[a-z]+(?:-[a-z]+)?\.[1-9][0-9]*/");
var result=patt.exec(str);
alert(result);
此警报出来作为null
?但是,如果我按照以下方式工作:
var patt=/[a-z]+(?:-[a-z]+)?\.[1-9][0-9]*/;
var result=patt.exec(str);
alert(result);
为什么“新的RegExp()”不起作用?
Javascript不支持条件''(部分 – NullUserException 2010-08-23 17:49:46
像JS中'new'的大多数其他用法一样,我避免使用'new RegExp'。请注意,到目前为止发布的两个答案都是使用文字形式而不是' new':https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions – JAL 2010-08-23 17:51:06