我现在有一个使用正则表达式的程序:
const regex = /(\W{1,})|[\w][\w'`’‘-]*[\w-]|'|\w+/gm;
运行时:
console.log("one!@# two!!?".match(regex) || []);
我得到:
["one", "!@# ", "two", "!!?"]
我需要以一种我可以在最后得到的方式更新正则表达式:
["one", "!@#", " ", "two", "!!?"]
pkwftd7m1#
您可以匹配单词字符\w+,或者除了空格字符[^\w\s]+或空格字符\s+之外的非单词字符您可以省略/m标志,因为模式中没有锚点。
\w+
[^\w\s]+
\s+
/m
\w+|[^\w\s]+|\s+
Regex demo
console.log("one!@# two!!?".match(/\w+|[^\w\s]+|\s+/g));
您可以将此部分保留在备选项\w[\w'’‘-]*[\w-]中,但这将匹配至少2个字符,例如像a'-`这样的字符串
\w[\w'
中,但这将匹配至少2个字符,例如像
[^\w\s]+|\w[\w'`’‘-]*[\w-]|\w+|\s+
你可以在这个regex demo上看到匹配。
1条答案
按热度按时间pkwftd7m1#
您可以匹配单词字符
\w+
,或者除了空格字符[^\w\s]+
或空格字符\s+
之外的非单词字符您可以省略
/m
标志,因为模式中没有锚点。Regex demo
您可以将此部分保留在备选项
\w[\w'
’‘-]*[\w-]中,但这将匹配至少2个字符,例如像
a'-`这样的字符串你可以在这个regex demo上看到匹配。