我在网址中有以下模式。
如果第一个(。)是强制性的,并且在第一个(。)之前和之后至少有一个字符,则其余的东西(数字,连字符和第二个(。))是可选的。
我创建了以下正则表达式:
^\w+.\w+-*\w*.?\d*\w*-*\w*
虽然它成功地匹配了上述所有模式,但它也匹配了一些不需要的模式,如:
我在这里做错了什么?
答案 0 :(得分:2)
正则表达式中出现的问题
\.
\w
是一个字符类,包括小写字母,大写字母,数字和下划线。这解释了为什么“1234”通过了。 试试这个
^[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.ECMAScript
和RegexOptions.Multiline
答案 4 :(得分:0)
[a-zA-Z] \ w *(。[ - \ w] +){1,2} $效果很好......在http://regexr.com?3020g
查看