符合与以下模式匹配的正则表达式?

时间:2009-11-05 08:49:18

标签: regex

我在网址中有以下模式。

  1. 或John.Smith
  2. John.Smith.1
  3. John.Al史密斯
  4. John.al-smith.1
  5. John.Smith.Al-Caboon
  6. 如果第一个(。)是强制性的,并且在第一个(。)之前和之后至少有一个字符,则其余的东西(数字,连字符和第二个(。))是可选的。
    我创建了以下正则表达式:

    ^\w+.\w+-*\w*.?\d*\w*-*\w*
    

    虽然它成功地匹配了上述所有模式,但它也匹配了一些不需要的模式,如:

    1. “login”(没有强制性的第一个点)
    2. “users / john”(不受欢迎/ 并且没有强制性的第一个点)
    3. “1234”(无效,模式必须以字符开头)
    4. 我在这里做错了什么?

5 个答案:

答案 0 :(得分:2)

正则表达式中出现的问题

  1. “”。是正则表达式中的元字符。它匹配“任何东西”。你应该逃避它以匹配点。像这样:\.
  2. \w是一个字符类,包括小写字母,大写字母,数字和下划线。这解释了为什么“1234”通过了。
  3. 试试这个

    ^[a-zA-Z]\w*(\.[-\w]+){1,2}$
    

答案 1 :(得分:1)

也许你应该逃避点

\.

答案 2 :(得分:0)

\w表示[A-Za-z0-9_]。这就是为什么它匹配“1234”。

答案 3 :(得分:0)

使用此表达式:\w+\S*?\.\w+\S*

我将你的定义读作:

  • 至少一个字符
  • 强制点
  • 至少一个字符

使用.NET RegexOptions.ECMAScriptRegexOptions.Multiline

成功运行

答案 4 :(得分:0)

[a-zA-Z] \ w *(。[ - \ w] +){1,2} $效果很好......在http://regexr.com?3020g

查看