正则表达式表示不能使用一次或不使用

以下是我的正则表达式:
[^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 an e,use [ae].

在字符类中,– 创建文字字符之间的范围.在您的情况下,这些范围无效(从具有较高值的​​字符转到具有较低值的字符),因为{4}和其他子模式被视为单独的字符,而不是特殊构造:

所以,你需要做的就是删除双方的[和]:

^4\d{3}-?\d{4}-?\d{4}-?\d{4}$

regex demo.

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...