我遇到了很多简单的正则表达式匹配问题。Javascript正则表达式问题与 b和国际字符
我有这个带重音字符的字符串(这只是一个例子)"Botó Entrepà Nadó Facebook! "
我想用另一个列表中的单词来匹配单词。
这是我的代码的简化版本。例如,为达到“Botó
”
var matchExpr = new RegExp ('\\b' + 'Botó' + '\\b','i');
"Botó Entrepà Nadó Facebook! ".match(matchExpr);
如果我运行它,它不匹配“Botó
”预期(火狐,IE和Chrome)。
我以为这是我的错误。但这里说到的乐趣...
如果我修改这样"Botón Entrepà Nadó Facebook! "
字符串(注意“n
”后“Botó
‘),我运行相同的代码:
var matchExpr = new RegExp ('\\b' + 'Botó' + '\\b','i');
"Botón Entrepà Nadó Facebook! ".match(matchExpr);
它匹配’Botó
” ????? !!!! (至少在Firefox中)。 这对我来说没有意义,因为“n
”不是一个字边界(即与\b
相匹配)。
如果您尝试全字匹配:
var matchExpr = new RegExp ('\\b' + 'Botón' + '\\b','i');
"Botón Entrepà Nadó Facebook! ".match(matchExpr);
它的工作原理。
为了让它更加怪异,我们在最后添加了另一个带重音符号的字母。
var matchExpr = new RegExp ('\\b' + 'Botóñ' + '\\b','i');
"Botóñ Entrepà Nadó Facebook! ".match(matchExpr);
如果我们尝试匹配这个,它什么都不匹配。但是,如果我们尝试这种
var matchExpr = new RegExp ('\\b' + 'Botóñ' + '\\b','i');
"Botóña Entrepà Nadó Facebook! ".match(matchExpr);
它匹配 “Botóñ
”。这是错误的。
如果我们尝试匹配“Facebook”,它会按预期工作。 如果您尝试在中间匹配带重音符的单词,它会按预期工作。 但如果您尝试在最后匹配带有口音的单词,则会失败。
我在做什么错?这是预期的行为?
*因此,它将适用于末尾有重音符的单词,但不会在末尾带有重音符号。 – 2011-03-15 12:42:34
我认为你的最后一句话需要一点帮助... – Pointy 2011-03-15 12:42:41
@Felix @Pointy谢谢,修正了 – 2011-03-15 12:48:19