JavaScript正则表达式,在哪里使用转义字符?

时间:2011-04-01 13:53:35

标签: javascript regex escaping

正则表达式允许使用以下字符:字母数字,空格,' - ','_','&','()'和'/'

这是表达式

[\s\/\)\(\w&-]

我已经在各种在线测试人员中对此进行了测试,并且知道它有效,但我无法让它在代码中正常工作。我尝试的任何东西都会出现sysntax错误..有什么建议吗?

var programProductRegex = new RegExp([\s\/\)\(\w&-]);

3 个答案:

答案 0 :(得分:28)

您可以使用正则表达式语法:

var programProductRegex = /[\s\/\)\(\w&-]/;

使用正斜杠来分隔正则表达式模式。

如果使用RegExp对象构造函数,则需要传入一个字符串。因为反斜杠是JavaScript字符串中的特殊转义字符,并且它们也是正则表达式中的转义字符,所以您需要使用两个反斜杠在字符串中执行正则表达式转义。使用字符串的等效代码将是:

var programProductRegex  = new RegExp("[\\s\\/\\)\\(\\w&-]");

原始正则表达式中的所有反斜杠都需要在字符串中进行转义才能正确解释为反斜杠。

当然第一种选择更好。当你从某个地方获得一个字符串并希望从中创建一个正则表达式时,构造函数很有用。

var programProductRegex  = new RegExp(userInput);

答案 1 :(得分:6)

如果您正在使用String并希望转义(之类的字符,则需要编写\\((意思是写反斜杠,然后是左括号=>转义它)。

如果您使用RegExp对象,则每个字符只需要一个反斜杠(例如\(

答案 2 :(得分:1)

用分隔符封闭你的正则表达式:

var programProductRegex = /[\s\/)(\w&-]/;