Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RegExp和\\_Javascript_Regex - Fatal编程技术网

Javascript RegExp和\\

Javascript RegExp和\\,javascript,regex,Javascript,Regex,我有以下表达式:^(0 | 1)\\1{1,}$ 为什么它只在与new RegExp()一起使用时才起作用 删除第二个反斜杠: /^(0|1)\1{1,}$/.test("000"); // true 这种方法之所以有效,是因为反斜杠在正则表达式中被逐字处理,而在字符串中被转义(然后在正则表达式中再次转义) 例如: new RegExp('\\\\').test('\\'); // true /\\\\/.test('\\'); // false new RegExp('\\\\').sour

我有以下表达式:
^(0 | 1)\\1{1,}$

为什么它只在与
new RegExp()一起使用时才起作用


删除第二个反斜杠:

/^(0|1)\1{1,}$/.test("000"); // true
这种方法之所以有效,是因为反斜杠在正则表达式中被逐字处理,而在字符串中被转义(然后在正则表达式中再次转义)

例如:

new RegExp('\\\\').test('\\'); // true
/\\\\/.test('\\'); // false
new RegExp('\\\\').source; // '\\' - one backslash
/\\\\/.source; // '\\\\' - two backslashes

console.log('\\'); // shows one backslash

使用
RegExp
时,正则表达式将被视为字符串。因此,您必须使用
\\
来转义
\
。当与
/…/
表单一起使用时,不需要转义。因此,只需删除
\\
中的第二个
\

console.log(/^(0|1)\1{1,}$/.test("000"));
输出

true

通过将
\\1
剥离到
\1
尝试此正则表达式:

/^(0|1)\1+$/.test("000");
使用字符串构造
RegExp
对象时,需要双重转义:

  • 第一个字符串对象
  • 第二名由Regex引擎提供
  • 这在这里是不需要的,因为您直接使用
    /和/

    构建正则表达式,您只需要使用
    ^(0 | 1)\1{1,}$
    请参见这里的旁注,
    /^([01])\1+$/
    看起来更好。
    /^(0|1)\1+$/.test("000");