Javascript正则表达式字符排除

时间:2012-05-27 22:27:36

标签: javascript regex

我有一个这样的js正则表达式:

/^[a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ]+$/

现在我想排除像QVXqvx这样的a-zA-Z字母。如何更改此正则表达式的语法?

我试过但没有运气。请帮帮我。

提前致谢

4 个答案:

答案 0 :(得分:8)

您仍然可以执行范围,但是您必须执行排除这些字母的范围,因此类似于A-PR-UWYZ

答案 1 :(得分:8)

执行此操作的最佳方法是简单地更新范围以排除您不想要的字母。这会让你知道:

/^[a-pr-uwyzA-PR-UWYZęóąśłżźćńĘÓĄŚŁŻŹĆŃ]+$/

您可以使用负前瞻来提取一种形式的字符类减法。但是,由于您为每个匹配的字符串重复否定前瞻,因此效率会降低。在任何情况下,这都是这样的:

/^(?:(?![qvxQVX])[a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ])+$/

当你没有像这样无限次重复一个角色类时,这种效果最好。

包括Java和.NET在内的几种正则表达式使用特殊语法有效地支持字符类减法。

在Java中,与否定组相交:

/^[a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ&&[^qvxQVX]]+$/

一个鲜为人知的事实是Opera Web浏览器实际上在其原生JavaScript正则表达式中支持上述Java语法。 Opera可能会在将来删除此功能,因为它是非标准的(它基于废弃的ES4提议),但它至少适用于当前版本(v11.64)。

.NET,XPath和XML Schema支持以下更简单的字符类减法语法:

/^[a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ-[qvxQVX]]+$/

答案 2 :(得分:1)

你做不到。在这种情况下,您需要手动枚举 除被排除的QVXqvx

之外的所有字母

答案 3 :(得分:0)

/^[a-pA-PR-Ur-uWwYyZzęóąśłżźćńĘÓĄŚŁŻŹĆŃ]+$/