我有一个这样的 js 正则表达式:
/^[a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ]+$/
现在我想从像 QVXqvx 这样的 a-zA-Z 字母中排除。应该如何更改此正则表达式的语法?
我试过但没有运气。请帮我。
提前致谢
我有一个这样的 js 正则表达式:
/^[a-zA-ZęóąśłżźćńĘÓĄŚŁŻŹĆŃ]+$/
现在我想从像 QVXqvx 这样的 a-zA-Z 字母中排除。应该如何更改此正则表达式的语法?
我试过但没有运气。请帮我。
提前致谢
你仍然可以做范围,但你必须做不包括这些字母的范围,所以像 A-PR-UWYZ
最好的方法是简单地更新范围以排除您不想要的字母。那会给你留下这个:
/^[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]]+$/
你不能。在这种情况下,您需要手动枚举除排除之外的所有字母QVXqvx
/^[a-pA-PR-Ur-uWwYyZzęóąśłżźćńĘÓĄŚŁŻŹĆŃ]+$/