RegEx用一位数字查找单词

时间:2019-03-27 16:58:51

标签: regex

我需要检测具有特殊字符@#$且少于2位数字的单词。例如,“ ab3c”,“ a @ bc”,“ a @ 1c”,“ 4”,“ a2”等。虽然第一部分很简单,但是我不确定第二部分。任何帮助将不胜感激。

谢谢!

3 个答案:

答案 0 :(得分:1)

要匹配字符串中的0或1位数字,您可以使用:

^\D*\d?\D*$

答案 1 :(得分:1)

如果支持正向超前并且您不想匹配空字符串,则可以使用:

^(?!(?:[^\d\s]*\d){2})[\w@#$]+$

说明

  • ^字符串的开头
  • (?!负向断言来断言直接在右边的内容不是
    • [^\d\s]*匹配0+次而不是数字或空格字符,然后匹配一个数字
  • ){2}关闭否定前瞻并重复2次,因为如果成功,则断言将不会通过
  • [\w@#$]+匹配角色类中列出的任何内容1次以上
  • $字符串结尾

Regex101 demo

如果您有多个单词,可以将锚点^$更改(demo)到单词边界\b

答案 2 :(得分:0)

正则表达式有点长,但是可以用。

^[A-Za-z\@\#\$]*\d{0,1}[A-Za-z\@\#\$]*$

此处演示:https://regex101.com/r/wlebTZ/1/