首页 > 解决方案 > Javascript Unicode Redex 不匹配字母或数字

问题描述

我想转换这个:

var result = mystring.replace(/[^a-zA-Z0-9]+/g, ' ');

到一个正常运行的 unicode 版本,这样我就可以只索引字母和数字。例如,我不想要 [-_%<>...]。由于 JS 本身不支持此功能,因此我使用的是xregexp

这似乎没有给我任何结果......我的字母和数字部分是否正确?

<script src="https://unpkg.com/xregexp/xregexp-all.js"></script>
<script>
    var s = `joanthan------______++++++ <me> bornss $%^&\` asdfasdf+++áeé´sé´s , н, п, р, с, т, ф, х, ц, ч`;
    var r1 = XRegExp.replace(s, /[^\p{L}\p{N}]+/g, ' ');
    var r2 = s.replace(/[^a-zA-Z0-9]+/g, ' ');
    console.log(r1);
    console.log(r2);
</script>

想法?谢谢!

标签: javascriptregexreplaceunicodexregexp

解决方案


为了将 Unicode 属性转义与 RegExp(以及扩展名 XRegExp)一起使用,您需要设置 Unicode 标志。

const s = `joanthan------______++++++ <me> bornss $%^&\` asdfasdf+++áeé´sé´s , н, п, р, с, т, ф, х, ц, ч`;
let r1 = s.replace(/[^\p{L}\p{N}]+/gu, ' ')
console.log(r1);


推荐阅读