Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中匹配和拆分中文逗号的正则表达式_Javascript_Regex_Split_Comma_Chinese Locale - Fatal编程技术网

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

JavaScript中匹配和拆分中文逗号的正则表达式,javascript,regex,split,comma,chinese-locale,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 中文字符示例: var str = "继续,取消 继续 ,取消"; var arr = str.split(/\s*,\s*/); Values in arr

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

例如:

var str = "john,walker    james  , paul";
var arr = str.split(/\s*,\s*/);
Values in arr = [john,walker james,paul] // Size: 3
中文字符示例:

var str = "继续,取消   继续 ,取消";
var arr = str.split(/\s*,\s*/);
Values in arr = ["继续,取消   继续 ,取消"] // Size: 1, All values at index 0 no splitting happened
尝试使用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

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

ASCII逗号与中文文本中的逗号不匹配。将ASCII逗号(
\x2C
)替换为中文逗号(
\uFF0C
),或使用字符类
[,]
来匹配这两个字符:

var str=”继续,取消   继续 ,取消";

console.log(str.split(/\s*[,]\s*/);
从2018年起,JavaScript中对新正则表达式功能的支持越来越多,因此要匹配中文,您只需执行以下操作:

const REGEX = /(\p{Script=Hani})+/gu;
'你好'.match(REGEX);
// ["你好"]
诀窍是使用
\p
并使用正确的脚本名称,
Hani
代表汉文脚本(中文)。完整的脚本列表如下:

我做了,它成功了

var re1 = new RegExp("^[\u4E00-\uFA29]*$"); //Chinese character range 
var re2 = new RegExp("^[\uE7C7-\uE7F3]*$"); //Chinese character range
str = str.replace(/(^\s*)|(\s*$)/g,'');
if ((re1.test(str)) || (re2.test(str))) {
  console.log('CHINESE CHAR');
}
只是使用普通的javascript
const str=”继续,取消   继续 ,取消";
//将所有中文逗号替换为英文逗号
const arr=str.replace(/,/ig,`,`).split(`,`);

console.log(`result arr`,arr);
但中文逗号不是ASCII逗号。请使用
str.split(/\s*,\s*/)
。str的值可以是任何语言,此解决方案是否适用于任何语言环境?@quintin:The
\s
匹配JS regex中的任何Unicode空格。至于逗号,如果需要支持所有Unicode逗号,则需要创建一个字符类,其中包括Unicode表中的所有逗号。对于逗号没有特殊的类,而且,JS正则表达式甚至不支持Unicode类别类(那些
\p{…}
类)﹐,,]。另外,有关更多逗号代码,请参阅。谢谢@Wiktor这非常有帮助