【发布时间】:2016-07-28 10:19:00
【问题描述】:
在 Javascript 中有什么方法可以在正则表达式中使用与 /(正斜杠)不同的字符作为分隔符?
大多数其他语言都有这样做的方法。
例如,Perl:
m@myregex@
我们是否仅限于在 Javascript 中使用“/”?
【问题讨论】:
标签: javascript regex
在 Javascript 中有什么方法可以在正则表达式中使用与 /(正斜杠)不同的字符作为分隔符?
大多数其他语言都有这样做的方法。
例如,Perl:
m@myregex@
我们是否仅限于在 Javascript 中使用“/”?
【问题讨论】:
标签: javascript regex
在 JavaScript 中使用正则表达式的简单方法是使用 / 字符来分隔它。但是,如果您想使用全局对象RegExp,则需要使用普通字符串转义规则将字符串作为第一个参数传递给构造函数。以下是等价的。
// shorthand way.
var re = /\w+/;
// a way to pass a string in
var re = new RegExp("\\w+");
【讨论】:
我们是否仅限于在 javascript 中使用“/”?
不是真的.. 您可以通过使用new RegExp (string) constructor. 来避免使用任何正则表达式分隔符
var re = new RegExp (string);
请记住,这将要求您进行两次转义而不是一次转义。
【讨论】:
/ 定界符一样,会遇到各种各样的问题;允许任何其他字符将是严重的问题。
/ 作为分隔符的问题的直接答案。您标记的答案建议使用使用 /.../ 语法的正则表达式文字,这显然不能满足您的要求。
在 Javascript 中,如果您想内联正则表达式,您唯一的选择是正斜杠分隔符:/foo/
正如其他答案所指出的,您还可以使用 new Regexp("foo") 将正则表达式分配给变量。
使用多个分隔符绝对是 Perl 的事情。在 Perl 中,您几乎可以使用任何字符作为分隔符,例如字符串:
使用单引号的典型语法 -- 'dipset'
使用q函数——q(dipset)q!dipset!q%dipset%
这是否产生可读的东西取决于上下文。如果结果是可读的,Perl 允许你这样做很好。例如,正则表达式不够可读,内部没有一堆转义的反斜杠。
【讨论】: