是否可以扩展正则表达式元字符的范围?
Is it possible to extend the range of a regex meta character?
我正在使用 js (javascript) 正则表达式,但我想答案适用于某种形式的所有正则表达式。
我只是想知道是否可以这样做:
/\w+[更多字符]/g
(不正确的表述请忽略,仅供参考)
或者我们是否锁定了元字符含义的最终确定性,如果我们想要 \w 来容纳更多字符,我们必须编写整个范围结构,即 [a-Z...更多字符]?
由于这是一个 yes/no 问题,我希望能举例说明这个问题对以后的帮助有任何用处。
谢谢。
您无法更改 \w
的覆盖范围,但可以在另一个 class 中使用它。
例如,[\wéà]
是 [a-zA-Z0-9_éà]
的快捷方式。
您可以像这样创建自己的角色class:
/[\wйцукенгшщз]+/g
而且您不仅可以识别 'a'、'b' 到 'z',还可以识别西里尔字符“й”、“ц”等
例子(这里最后一个'a'是拉丁文,其余是西里尔文):
var re = /[\wа-яА-ЯёЁ]+/;
var str = 'Славa';
var m;
if ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
alert(m[0]);
}
答案是肯定的,例如:
[\w$\€]
将匹配 \w + 2 个额外字符 $ 和 €。这相当于:
[a-zA-Z0-9_$\€]
我正在使用 js (javascript) 正则表达式,但我想答案适用于某种形式的所有正则表达式。
我只是想知道是否可以这样做: /\w+[更多字符]/g
(不正确的表述请忽略,仅供参考)
或者我们是否锁定了元字符含义的最终确定性,如果我们想要 \w 来容纳更多字符,我们必须编写整个范围结构,即 [a-Z...更多字符]?
由于这是一个 yes/no 问题,我希望能举例说明这个问题对以后的帮助有任何用处。
谢谢。
您无法更改 \w
的覆盖范围,但可以在另一个 class 中使用它。
例如,[\wéà]
是 [a-zA-Z0-9_éà]
的快捷方式。
您可以像这样创建自己的角色class:
/[\wйцукенгшщз]+/g
而且您不仅可以识别 'a'、'b' 到 'z',还可以识别西里尔字符“й”、“ц”等
例子(这里最后一个'a'是拉丁文,其余是西里尔文):
var re = /[\wа-яА-ЯёЁ]+/;
var str = 'Славa';
var m;
if ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
alert(m[0]);
}
答案是肯定的,例如:
[\w$\€]
将匹配 \w + 2 个额外字符 $ 和 €。这相当于:
[a-zA-Z0-9_$\€]