regex 正则表达式:如何正确地按字符串、符号和空格拆分?“one!@# two!!?”

oprakyz7  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(95)

我现在有一个使用正则表达式的程序:

const regex = /(\W{1,})|[\w][\w'`’‘-]*[\w-]|'|\w+/gm;

运行时:

console.log("one!@# two!!?".match(regex) || []);

我得到:

["one", "!@# ", "two", "!!?"]

我需要以一种我可以在最后得到的方式更新正则表达式:

["one", "!@#", " ", "two", "!!?"]
pkwftd7m

pkwftd7m1#

您可以匹配单词字符\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\s]+|\w[\w'`’‘-]*[\w-]|\w+|\s+

你可以在这个regex demo上看到匹配。

相关问题