我有这个数据:
/some test/ -> next data
prev<-/now/->/how about this/
asd<-/rege\/x/
/\/\//
/\\/
/^\d+$/ <- /\./
/\./ -> /\d/
我想将其拆分为信息 token \w+|/.*?/
, <-
, ->
但是->
和<-
无法出现在里面/here/
我试过this ,但在这种情况下失败 /\/\//
.
const data = `/some test/ -> next data
prev<-/now/->/how about this/
asd<-/rege\/x/
/\/\//
/\\/
/^\d+$/ <- /\./
/\./ -> /\d/`
console.log(data.split(/\s*(\w+|\/.*?\/\B)\s*/).filter(x => x != ""))
我应该在正则表达式中做什么来覆盖这部分?
最佳答案
假设在启动 /.../
的未转义 /
之前不能有转义的 /
字符> 子字符串,您可以使用
/\s*(\w+|\/[^\/\\]*(?:\\.[^\/\\]*)*\/)\s*/g
请参阅regex demo
如果可以转义换行符(如 CR 或 LF),则需要将 .
替换为 [\s\S]
/[ ^]
匹配任何字符。
注意:\/[^\/\\]*(?:\\.[^\/\\]*)*\/
匹配...
\/
- 一个/
[^\/\\]*
- 除/
和\
之外的 0+ 个字符
(?:\\.[^\/\\]*)*
- 零个或多个序列\\.
- 转义字符[^\/\\]*
- 除/
和\
之外的 0+ 个字符
\/
- 一个/
字符
关于javascript - 如何将其拆分为 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42497301/