【问题标题】:Regular expression for numeric with special characters **Only**带有特殊字符的数字的正则表达式**仅**
【发布时间】:2014-02-19 16:10:56
【问题描述】:

我正在寻找一个正则表达式来仅匹配具有 特殊 字符且大小为 4+数字 字符串。 我对此处发布的问题进行了一些回顾:

测试网站:http://regexlib.com/RETester.aspx


1-regular expression for numeric and special chacter check

解决方案: ^((?!.*?\d)(?!.*?[^\w\s]).)+$

我试过这个正则表达式:

  • 155-555:不匹配(错误)
  • 155555:不匹配(错误)

2-Regular Expression to match a string of numbers including special characters

解决方案: ([-()_.+ ]*\d[-()_.+ ]*){4,}

  • 155-555:匹配(正确)
  • 155555:匹配(正确)
  • 155-555aaa:匹配(错误)

这个正则表达式匹配前面的字符串。但是有一个错误。第三个字符串 155-555aaa 包含字母而不是特殊字符。我们不应该匹配 155-555aaa,因为 a 不是特殊字符。如何修改此正则表达式以仅匹配带有特殊字符的数字字符串。 数字字符串可以是任何形式:

示例: 24332-2432@2342-1234


特殊字符:[&~#"{'[(|-`_\ç^à@)]}=}^¨$$*%ù]

数字 = 数字

【问题讨论】:

  • 什么是“特殊字符”?ぷ特别吗?
  • ok 特殊字符:[&~#"{'[(|-`_\ç^à@)]}=}^¨$$*%ù]
  • 怎么样怎么样:[^a-zA-Z]{4,}?

标签: c++ regex string


【解决方案1】:

只要匹配任何 [a-zA-Z](长度为 4 或更多)的东西:

^[^a-z\s]{4,}$

Here is a test 在正则表达式上。

【讨论】:

  • 是的,因此 [^a-z] 而不是 [a-z]
  • 他否定所有字母,但也匹配字符串的开头(^)和结尾($),这就是他防止“155-555aaa”匹配的方法。
  • 注意空格也会匹配这个否定,所以 (3 4 5 6 7 8) 是匹配的,(1 2) 也是匹配的,甚至只是一堆空格。
  • @Dane 感谢您的提醒。我已经编辑了我的答案,所以正则表达式现在拒绝空格
【解决方案2】:

随着更新特殊字符=[&~#"{'[(|-``_\ç^à@)]}=}^¨$*%ù],“特殊或数字”类变为[0-9&~#"{'[(|-``_\ç^à@)]}=}^¨$*%ù],完整的正则表达式变为 ^[0-9&~#"{'[(|-``_\ç^à@)]}=}^¨$*%ù]{4,}$.

但 ù 是特殊的,而 ú 不是,这是相当可疑的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多