如何使用 \d* 和 \w* 将 unicode 字符重复为数字和字符

How can I repeat the unicode character as the digits and characters with \d* and \w*

我有这个正则表达式:

\d*\w*[\x{0021}-\x{003F}]*

我想重复 0021 到 003f 之间的一个数字、一个字符和一个特定的代码点任意次数。

我看到使用 \d*\w* 可以生成“a1”,所以顺序无关紧要,但我只能在末尾重复代码点字符,我怎样才能使它的顺序重复并不重要,就像数字和字符一样,可以生成如下字符串:a1!a?23!sd2

使用 \w 也匹配 \d,因此您可以从字符 class.

中省略它

请注意,这部分 {0021}-\x{003F} 也匹配数字 0-9(参见 ASCII table Hx 值 21-3F),因此也有一些重叠。

您可以将它分成 2 个 unicode 范围,但这只会使字符 class 表示法变长。

将其更改为 [A-Za-z_\x{0021}-\x{003F}]+ 指定所有使用的范围,但是如果您在 php 中添加 unicode 标志,使用 \w[A-Za-z] 匹配更多

要匹配 1 次或多次出现,您可以使用:

[\w\x{0021}-\x{003F}]+

看到这个regex demo and this regex demo