根据多个分隔符拆分字符串

IT技术 javascript jquery regex string split
2021-02-27 08:37:17

我试图通过引用How split a string in jquery with multiple strings as separator来根据多个分隔符拆分字符串

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

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

但我收到错误

Uncaught SyntaxError: Invalid regular expression: / |+|-|(|)|*|/|:|?/: Nothing to repeat 

如何解决?

6个回答

正则表达式相关字符 +,-,(,),*,?

var x = "adfds+fsdf-sdf";

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

http://jsfiddle.net/cpdjZ/

这很好用!new RegExp(separators.join('|'), 'g')不过,这里到底在做什么?
2021-04-28 08:37:17
男子。正则表达式。这就是为什么我花了这么长时间来真正学习它们。为什么 + 前面有三个斜线,而 * 有 2 个斜线,而 :、/ 和空格没有?
2021-05-06 08:37:17
@HussienK使交替的表情,看这里regular-expressions.info/alternation.html
2021-05-12 08:37:17

这应该有效:

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

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

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

你能提供一个 var x 的例子吗?
2021-04-17 08:37:17
var arr = str.split(new RegExp('[|!=&+- ]', 'g'));- 错误
2021-05-08 08:37:17

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

var tokens = x.split(new RegExp('[-+()*/:? ]', 'g'));​​​​​​​​​​​​​​​​​

注意-必须先来(或被转义),否则会认为是range操作符(例如a-z

我认为您需要转义 +、* 和 ?,因为它们在大多数正则表达式语言中具有特殊含义

这是因为字符 like+*在 Regex 中具有特殊含义。

将您的连接从|to更改|\您应该没问题,转义文字。

当我将其更改为 |\ 'Uncaught SyntaxError: Unexpected token ;' 时出现错误 我认为这是因为当 |\ 在引号内输入时,引号被转义了。如何避免这种情况?
2021-04-20 08:37:17