Javascript Regexp添加不可见的点字符替换\b

Javascript Regexp添加不可见的点字符替换\b,javascript,regex,Javascript,Regex,我希望这是我的正则表达式:/^word\b/(word是动态的) 当我将其设置为动态时,我必须使用: var word='spoon'; 'spoon .table .chair'.match(new RegExp('^'+word+'\b')); 但是,这会发现null,而这: var word='spoon'; 'spoon .table .chair'.match(/^spoon\b/); 查找[“勺子”] 有趣的是,当我检查regex I worte和regex RegExp之间的差

我希望这是我的正则表达式:
/^word\b/
word
是动态的)

当我将其设置为动态时,我必须使用:

var word='spoon';
'spoon .table .chair'.match(new RegExp('^'+word+'\b'));
但是,这会发现
null
,而这:

var word='spoon';
'spoon .table .chair'.match(/^spoon\b/);
查找
[“勺子”]

有趣的是,当我检查regex I worte和regex RegExp之间的差异时,我写道:

console.log(/^spoon\b/,new RegExp('^'+word+'\b'))
它表明:

/^spoon\b/ /^spoon/
如果随后将日志输出的第二部分(
/^spoon/
)复制到我的代码编辑器中,我会看到以下字符:

那是什么?当字符串可能是一个单词字符串(spoon或另一个单词)时,我并不总是保证在末尾有空格,如何处理以结尾的RegExp单词


我宁愿不用看不见的东西来做这件事

你必须通过添加一个额外的斜杠来转义正则表达式字符串中
b
中的
\

var regex = new RegExp('^' + word + '\\b')

这是因为
RegExp
希望看到两个字符
\
b
,但是字符串
'\b'
是一个字符,ascii 8是退格字符(与
'\n'
是一个换行字符的方式相同).

您必须通过添加额外的斜杠来转义正则表达式字符串中
b
中的
\

var regex = new RegExp('^' + word + '\\b')

这是因为
RegExp
希望看到两个字符
\
b
,但是字符串
'\b'
是一个字符,ascii 8是退格字符(与
'\n'
是一个换行字符的方式相同)。

在Javascript中,
\b
并不意味着a
\
后面跟着a
b
。它表示退格字符(ASCII代码8)。要获得一个
\
后跟一个
b
,您需要转义斜杠,以便Javascript不会将其解析为退格:

'^' + word + '\\b'

如果你想使用
\d
\s
或其他任何东西,同样的事情也适用:你需要用另一个代码对
\
进行转义,这样Javascript就不会认为它是Javascript转义代码,并且RegExp可以按照你的预期解析它。

在Javascript中,
\b
并不意味着a
\
后面跟着a
b
。它表示退格字符(ASCII代码8)。要获得一个
\
后跟一个
b
,您需要转义斜杠,以便Javascript不会将其解析为退格:

'^' + word + '\\b'

如果你想使用
\d
\s
或其他任何东西,同样的事情也适用:你需要用另一个代码对
\
进行转义,这样Javascript就不会认为它是Javascript转义代码,并且RegExp可以按照你的期望对它进行解析。

'spoon.table.chair'.match(新的RegExp('^'+word+'\\b')必要时添加修饰符m
“spoon.table.chair”.match(新的RegExp('^'+word+'\\b',m')询问并回答了n次。如果我看不到,我就不会问其他问题了?
spoon.table.chair.match(新RegExp('^'+word+'\\b')必要时添加修饰符m
“spoon.table.chair”.match(新的RegExp('^'+word+'\\b',m')询问和回答n次。如果我看不到,我就不会问其他问题了?