如何拆分
- (ab | c)& d - > (d | c)& e< - > ˚F
进入数组
['-', '(', 'ab', '|', 'c', ')', '&', 'd', '->', '(', 'd', '|', 'c', ')', '&', 'e', '<->', 'f']
因此,一般来说,它应该将字符串拆分为标记。如果将两个字母组合成一个单词(例如ab
),则应将其视为1个标记。我有运营商-
,(
,)
,|
,&
,->
和<->
。
可能类似
var str = '-(ab | c) & d -> (d|c)&e <-> f';
var regex = /([-&\|()]|\w+)/;
str.split(regex);
但它不包含->
和<->
答案 0 :(得分:2)
这个怎么样?
var string = '-(ab | c) & d -> (d|c)&e <-> f';
var result = string.match(/<->|->|[-()|&]|\w+/g);
console.log(result);
您可以使用[]
和|
运算符。请参阅JavaScript regex on MDN。
答案 1 :(得分:2)
您可以使用此正则表达式进行拆分:
var str = '-(ab | c) & d -> (d|c)&e <-> f';
var arr = str.split(/\s*(<?->|[-&|()]|\w+)\s*/).filter(Boolean)
console.log(arr)
//=> ["-", "(", "ab", "|", "c", ")", "&", "d", "->", "(", "d", "|", "c", ")", "&", "e", "<->", "f"]
<强>解体:强>
\s* # match 0 or more spaces
( # group spart
<?-> # match <-> or ->
| # OR
[-&|()] # match one of these symbols
| # OR
\w+ # match 1 or more word chars
) # group end
\s* # match 0 or more spaces
答案 2 :(得分:2)
您可以使用匹配的正则表达式
/<?->|[^\s\w]|\w+/g
其中[^\s\w]
匹配任何非空格或非字母字符,假设字符串不包含垃圾,否则使用
/<?->|[-()|&]|\w+/g
请参阅下面的regex demo和JS演示:
var re = /<?->|[-()|&]|\w+/g;
console.log("-(ab | c) & d -> (d|c)&e <-> f".match(re));
&#13;
模式详情:
<?->
- 可选的<
+ ->
|
- 或[^\s\w]
- 除空格和单词char之外的符号
[-()|&]
- 一个符号,-
或(
,)
,|
或&
|
- 或\w+
- 一个或多个单词字符。带有全局修饰符的正则表达式的String#match
获取正则表达式可以在输入字符串中找到的所有匹配值的数组。