1

我正在尝试对某些可能包含或不包含 unicode 字符的单词进行一些字符串操作。

这是我的代码:

var regex = XRegExp("(\\P{L}+)", "gui");
var s = 'no sea demásiado tarde';
var ret = XRegExp.replace(s, regex, "<span>$1</span>");

console.log(ret);
<script src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/3.1.1/xregexp-all.min.js"></script>

但是这些单词并没有像预期的那样被 span 标签包裹。怎么来的?

谢谢

4

1 回答 1

2

因为您将非字母包装\\P{L}+\P{L}匹配除 Unicode 字母以外的任何字符。

使用"\\p{L}+"模式并替换为<span>$&</span>$&反向引用代表整个匹配)。

var regex = XRegExp("\\p{L}+", "gui");
var s = 'no sea demásiado tarde';
var ret = XRegExp.replace(s, regex, "<span>$&</span>");

console.log(ret);
<script src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/3.1.1/xregexp-all.min.js"></script>

于 2016-11-08T16:37:06.490 回答