将 JavaScript 正则表达式中的非 ASCII 字符与单词边界进行匹配
在 JavaScript 中,具有单词边界 (b) 匹配的 RegExp 对象可以遇到处理非 ASCII 字符(例如芬兰语元音(ä、ö 和 å)时的限制)。为了准确匹配这些字符,我们需要调整我们的方法。
考虑以下代码:
<code class="javascript">var title = "this is simple string with finnish word tämä on ääkköstesti älkää ihmetelkö"; var searchterm = "äl"; if (new RegExp("\b" + searchterm, "gi").test(title)) { // This does not work for "äl" }</code>
此代码尝试使用 b 边界来匹配标题中的术语“äl” 。但是,它会失败,因为 b 根据标准 256 字节范围匹配单词边界,不包括非 ASCII 字符。
解决方案:非捕获带单词边界的组
要解决此问题,我们可以将 b 替换为显式匹配字符串开头或空格的非捕获组:
<code class="javascript">if (new RegExp("(?:^|\s)" + searchterm, "gi").test(title)) { // Now it works for "äl" }</code>
细分:
此修改后的代码将匹配标题中的术语“äl”,因为它定义了包含非 ASCII 字符的更灵活的词开头边界条件。
以上是如何在 JavaScript 正则表达式中将非 ASCII 字符与单词边界匹配?的详细内容。更多信息请关注PHP中文网其他相关文章!