来自String的正则表达式在Javascript中为null

时间:2017-10-29 09:44:26

标签: javascript regex string

我有一个字符串

let str = 'WordA<br>WordB';

我使用此表达式/(\S+)(?=<br>)/来匹配<br>之前的字符。

它可以直接作为预定义函数

工作

let regex = /(\S+)(?=<br>)/;

但是当我尝试使用字符串构建它时,它每次都会提供null

let rgs = "(\S+)(?=<br>)";
let regex = new RegExp(rgs);

如何将正则表达式用作字符串以获得相同的结果。

完整代码:

let str = 'WordA<br>WordB';
let regex = /(\S+)(?=<br>)/;

let m = str.match(regex);
console.log(m);
console.log(m[1]);

let rgs = ("(\S+)(?=<br>)");
let regex2 = new RegExp(rgs);
let m2 = str.match(regex2);
console.log(m2);
console.log(m2[1]);

1 个答案:

答案 0 :(得分:2)

通过new RegExp()在字符串中使用正则表达式时,需要转义反斜杠字符:

let str = 'WordA<br>WordB';
let regex = /(\S+)(?=<br>)/;

let m = str.match(regex);
console.log(m);
console.log(m[1]);

let rgs = "(\\S+)(?=<br>)";
let regex2 = new RegExp(rgs);
let m2 = str.match(regex2);
console.log(m2);
console.log(m2[1]);

否则"\S"将被翻译为“S”(因为您正在转义S个字符):

console.log("S", "\S", "\\S", "S" === "\S");