在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中使用"/"吗?
不是..你可以通过使用构造函数来避免使用任何正则表达式分隔符new RegExp (string)
.
var re = new RegExp (string);
Run Code Online (Sandbox Code Playgroud)
请记住,这将要求您双重逃避而不是单一逃脱.
在Javascript中,如果要内联regexp,则唯一的选择是forwardslash分隔符: /foo/
正如其他答案所述,您还可以使用将正则表达式分配给变量new Regexp("foo")
.
使用多个分隔符肯定是Perl的事情.在Perl中,您几乎可以使用任何字符作为分隔符,例如使用字符串:
使用单引号的典型语法 - 'dipset'
使用q函数 - q(dipset)
q!dipset!
q%dipset%
这是否会产生可读性取决于上下文...如果结果是可读的,那么Perl允许你这样做很好.例如,正则表达式不够可读,内部没有一堆转义反斜杠.