JavaScript中中文逗号匹配和拆分的正则表达式

qui*_*tin 3 javascript regex split comma chinese-locale

我有一个正则表达式/ \ s *,\ s * /,它匹配左空格,然后是逗号,然后是右空格。

例:

var str = "john,walker    james  , paul";
var arr = str.split(/\s*,\s*/);
Values in arr = [john,walker james,paul] // Size: 3
Run Code Online (Sandbox Code Playgroud)

带有汉字的示例:

var str = "?????   ?? ???";
var arr = str.split(/\s*,\s*/);
Values in arr = ["?????   ?? ???"] // Size: 1, All values at index 0 no splitting happened
Run Code Online (Sandbox Code Playgroud)

尝试使用Unicode分割字符:

var str = "john,walker    james  , paul";
var arr = str.split(/\u0020*\u002C\u0020*/);
Values in arr = [john,walker james,paul] // Size: 3

var str = "?????   ?? ???";
var arr= str.split(/\u0020*\u002C\u0020*/);
Values in arr = ["?????   ?? ???"] // Size: 1, All values at index 0 no splitting happened
Run Code Online (Sandbox Code Playgroud)

我浏览了链接,但是那里没有多少信息可以在我的场景中使用。为汉字创建正则表达式并拆分它们真的是不可能的吗?

小智 6

截至2018年,JavaScript中对正则表达式新功能的支持越来越多,因此要匹配中文,只需执行以下操作:

const REGEX = /(\p{Script=Hani})+/gu;
'??'.match(REGEX);
// ["??"]
Run Code Online (Sandbox Code Playgroud)

诀窍是使用\p并使用正确的脚本名称,Hani代表汉字(中文)。脚本的完整列表在这里:http : //unicode.org/Public/UNIDATA/PropertyValueAliases.txt