javascript - JS中带有UTF8字符的正则表达式自动换行

标签 javascript regex utf-8


我已经阅读了这里所有涉及类似问题的文章,但仍然没有找到任何解决方案。在我的例子中,我想用一个跨度来包装字符串的每个单词。这些词包含特殊字符,例如“äüö...”

我现在正在做的是:

var textWrap = text.replace(/\b([a-zA-Z0-9ßÄÖÜäöüÑñÉéÈèÁáÀàÂâŶĈĉĜĝŷÊêÔôÛûŴŵ-]+)\b/g, "<span>$1</span>");

但是,如果 äüñ 或任何非 Ascii 字符位于末尾或开头,它也会像边界一样起作用。在一个词中,这些字符不作为边界。

'Ärmelkanal' becomes Ä<span>rmelkanal</span> but should be <span>Ärmelkanal</span>
'Käse'works fine... becomes <span>Käse</span>
'diré' becomes <span>dir</span>é but should be <span>diré</span>

如有任何建议,我们将不胜感激。我需要在客户端这样做 :-( 顺便说一句,我有没有提到我讨厌正则表达式 ;-)

非常感谢!

最佳答案

问题是 JavaScript 只能识别 ASCII 字母(和数字/下划线)之前/之后的单词边界。只需放下 \b anchor 即可。

result = subject.replace(/[a-zA-Z0-9ßÄÖÜäöüÑñÉéÈèÁáÀàÂâŶĈĉĜĝŷÊêÔôÛûŴŵ-]+/g, "<span>$&</span>");

关于javascript - JS中带有UTF8字符的正则表达式自动换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3787072/

相关文章:

javascript - PHP函数无法调用

java - 正则表达式去除 HTML 标签

javascript - 正后视匹配所有空格

java - 在java 7中将重音和字符组合成一个字符

c# - 为什么不是 `Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(x))==x`

javascript - 将 jsx 转换为 react 组件?

javascript - 如果一个 cookie 不存在,则在 Angular 中设置一个 cookie

javascript - 过滤数据 - 如何在 JavaScript 中过滤不需要的数据

javascript - 使用 'undefined' 函数参数返回简单类型错误

r - 为什么 R 将 UTF-8 header 读取为文本?