我有一个这样的js正则表达式:
/^[a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ]+$/
现在我想排除像QVXqvx这样的a-zA-Z字母。如何更改此正则表达式的语法?
我试过但没有运气。请帮帮我。
提前致谢
答案 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ęóąśłżźćńĘÓĄŚŁŻŹĆŃ]+$/