以下是我的正则表达式:
[^4\d{3}-?\d{4}-?\d{4}-?\d{4}$]
但它在 – 处抛出错误.我正在使用?,应该允许 – 出现零次或一次.为什么会出错?
正则表达式的问题是模式用[和]括起来,被视为字符类标记(见
Character Classes or Character Sets):
With a “character class”,also called “character set”,you can tell the regex engine to match only one out of several characters. Simply place the characters you want to match between square brackets. If you want to match an
a
or ane
,use[ae]
.
在字符类中,– 创建文字字符之间的范围.在您的情况下,这些范围无效(从具有较高值的字符转到具有较低值的字符),因为{4}和其他子模式被视为单独的字符,而不是特殊构造:
所以,你需要做的就是删除双方的[和]:
^4\d{3}-?\d{4}-?\d{4}-?\d{4}$