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\
后面跟着ab
。它表示退格字符(ASCII代码8)。要获得一个\
后跟一个b
,您需要转义斜杠,以便Javascript不会将其解析为退格:
'^' + word + '\\b'
如果你想使用
\d
或\s
或其他任何东西,同样的事情也适用:你需要用另一个代码对\
进行转义,这样Javascript就不会认为它是Javascript转义代码,并且RegExp可以按照你的预期解析它。在Javascript中,\b
并不意味着a\
后面跟着ab
。它表示退格字符(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次。如果我看不到,我就不会问其他问题了?