Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 .split()维护拆分字符_Javascript_Regex_Split - Fatal编程技术网

Javascript .split()维护拆分字符

Javascript .split()维护拆分字符,javascript,regex,split,Javascript,Regex,Split,我需要像这样分开一根线 var val = "$cs+55+mod($a)"; 排成一列 arr = val.split( /[+-/*()\s*]/ ); 问题是将拆分器字符保持为数组元素,如 arr = [ '$cs', '+', '55', 'mod', '(', '$a', ')' ] 而且不像 arr = [ '$cs', '55', 'mod', '$a' ] 您应该使用match而不是split "$cs+55+mod($a)".match(/([+-/*()\s*]|[^

我需要像这样分开一根线

var val = "$cs+55+mod($a)";
排成一列

arr = val.split( /[+-/*()\s*]/ );
问题是将拆分器字符保持为数组元素,如

arr = [ '$cs', '+', '55', 'mod', '(', '$a', ')' ]
而且不像

arr = [ '$cs', '55', 'mod', '$a' ]

您应该使用
match
而不是
split

"$cs+55+mod($a)".match(/([+-/*()\s*]|[^+-/*()\s*]+)/g);
说明:

[+-/*()\s*]    -- Your provided regex
[^+-/*()\s*]+  -- Negation of the above regex using ^ and mentioning that could be more than one letter by using +

您应该使用
match
而不是
split

"$cs+55+mod($a)".match(/([+-/*()\s*]|[^+-/*()\s*]+)/g);
说明:

[+-/*()\s*]    -- Your provided regex
[^+-/*()\s*]+  -- Negation of the above regex using ^ and mentioning that could be more than one letter by using +

谢谢大家的帮助

我的问题解决了,但还没有解决

下面是一个更详细的用法

}))


我做了一个演讲,大家都可以看到我在做什么。

首先感谢大家的帮助

我的问题解决了,但还没有解决

下面是一个更详细的用法

}))


我做了一个测试,你们都可以看到我在做什么。

你们不想让
+
介于
55
mod
之间吗?或者你的意思是这样写的:
arr=['$cs','+','55','+','mod','('','$a',')']
?我想要'+'在'55'和'mod'之间。问题是,split的“+”和其他字符没有作为数组元素收费。看看这篇文章,它似乎正是你想要的:所有的答案都很好!完全只是为了好玩,这里有一个前3个答案(其中1个被删除)的性能配置文件-一个滚动您自己的解决方案,使用
.match
,并使用正则表达式组:@dcd4u2首先添加相应的标记。这样我们也能尝到甜味。你不想让
+
介于
55
mod
之间吗?或者你的意思是这样写的:
arr=['$cs','+','55','+','mod','('','$a',')']
?我想要'+'在'55'和'mod'之间。问题是,split的“+”和其他字符没有作为数组元素收费。看看这篇文章,它似乎正是你想要的:所有的答案都很好!完全只是为了好玩,这里有一个前3个答案(其中1个被删除)的性能配置文件-一个滚动您自己的解决方案,使用
.match
,并使用正则表达式组:@dcd4u2首先添加相应的标记。这样我们也可以品尝甜味。你不需要使用捕获组,只需使用
“$cs+55+mod($a)”。匹配(/[+-/*()\s*]|[^+-/*()\s*]+/g)可以。@AvinashRaj strange。。但是
match
需要括号来捕捉,对吗?这在没有括号的情况下是如何工作的?谁告诉你match需要一个捕获组<代码>[+-/*()\s*]
部分将进行单独的匹配,
[^+-/*()\s*]+
也将进行单独的匹配。最后match返回所有匹配的字符。不需要捕获任何内容。您不需要使用捕获组,只需使用
“$cs+55+mod($a)”。匹配(/[+-/*()\s*]|[^+-/*()\s*]+/g)可以。@AvinashRaj strange。。但是
match
需要括号来捕捉,对吗?这在没有括号的情况下是如何工作的?谁告诉你match需要一个捕获组<代码>[+-/*()\s*]
部分将进行单独的匹配,
[^+-/*()\s*]+
也将进行单独的匹配。最后match返回所有匹配的字符。没有必要捕捉任何东西。