基于多个分隔符拆分字符串

Okk*_*kky 33 javascript regex string jquery split

我试图通过引用如何将jquery中的字符串拆分为多个字符串作为分隔符来拆分基于多个分隔符的字符串

由于我决定遵循多个分隔符

var separators = [' ', '+', '-', '(', ')', '*', '/', ':', '?'];
var tokens = x.split(new RegExp(separators.join('|'), 'g'));?????????????????
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误

Uncaught SyntaxError: Invalid regular expression: / |+|-|(|)|*|/|:|?/: Nothing to repeat 
Run Code Online (Sandbox Code Playgroud)

怎么解决?

mel*_*elc 51

正则表达式相关字符+, - ,(,),*,?所需的转义

var x = "adfds+fsdf-sdf";

var separators = [' ', '\\\+', '-', '\\\(', '\\\)', '\\*', '/', ':', '\\\?'];
console.log(separators.join('|'));
var tokens = x.split(new RegExp(separators.join('|'), 'g'));
console.log(tokens);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/cpdjZ/

  • 男人。正则表达式。这就是为什么我花了这么长时间才真正学习它们。为什么+前面有3个斜杠,而*前面有2个斜杠,而:、/和空格则没有? (2认同)

anu*_*ava 10

这应该工作:

var separators = [' ', '+', '(', ')', '*', '\\/', ':', '?', '-'];
var tokens = x.split(new RegExp('[' + separators.join('') + ']', 'g'));?????????????????
Run Code Online (Sandbox Code Playgroud)

生成的正则表达式将使用正则表达式字符类:/[ +()*\/:?-]/g

这样你就不需要逃避任何事情了.


sam*_*son 6

以下是完成同一件事的更简单方法。

var tokens = x.split(new RegExp('[-+()*/:? ]', 'g'));?????????????????
Run Code Online (Sandbox Code Playgroud)

请注意,-必须先出现(或先转义),否则它将认为它是range运算符(例如a-z