Javascript正则表达式分隔符(正斜杠的任何替代)?

pep*_*per 14 javascript regex

在Javascript中是否有任何方法使用不同的字符/(正斜杠)作为正则表达式中的分隔符?大多数其他语言都有这样做的方法.

例如,Perl:

 m@myregex@
Run Code Online (Sandbox Code Playgroud)

我们是否仅限于在Javascript中使用"/"?

Rya*_*yan 10

在JavaScript中使用正则表达式的简单方法是用/字符分隔它.但是,如果要使用全局对象RegExp,则需要使用普通字符串转义规则将字符串作为构造函数的第一个参数传入.以下是等同的.

// shorthand way.
var re = /\w+/;
// a way to pass a string in
var re = new RegExp("\\w+");
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.在我看来双重逃避是一个主要的痛苦,所以我想我坚持使用单个转义为字符"/"并使用"/"作为分隔符.如果有人编写了一个库或特殊函数来简化javascript中的转义正则表达式会很棒! (2认同)

anu*_*ava 6

我们只限于在javascript中使用"/"吗?

不是..你可以通过使用构造函数来避免使用任何正则表达式分隔符new RegExp (string).

var re = new RegExp (string);
Run Code Online (Sandbox Code Playgroud)

请记住,这将要求您双重逃避而不是单一逃脱.

  • @pepper你不能.JavaScript解析器与各种结一样,与`/`分隔符一样; 允许任何其他角色将是严重的问题. (4认同)
  • 很好的答案,但我仍然想知道我是否可以在上面的语法中使用"/"中的其他字符.如果我必须以这种方式声明正则表达式,则需要更多输入.我正在努力减少编写正则表达式单行程所需的时间. (3认同)

php*_*ils 5

在Javascript中,如果要内联regexp,则唯一的选择是forwardslash分隔符: /foo/

正如其他答案所述,您还可以使用将正则表达式分配给变量new Regexp("foo").

使用多个分隔符肯定是Perl的事情.在Perl中,您几乎可以使用任何字符作为分隔符,例如使用字符串:

使用单引号的典型语法 - 'dipset'

使用q函数 - q(dipset) q!dipset! q%dipset%

这是否会产生可读性取决于上下文...如果结果是可读的,那么Perl允许你这样做很好.例如,正则表达式不够可读,内部没有一堆转义反斜杠.