用单个点制定正则表达式

时间:2013-07-25 11:22:49

标签: java regex

我正在尝试为以下场景制定一个正则表达式:

要匹配的字符串:mName87.com

因此,字符串可能包含任意数量的字母数字字符,但在字符串中的任何位置只能包含一个点。

我制定了这个正则表达式:[a-zA-Z0-9.],但它甚至匹配多个点(。)

我在这里做错了什么?

5 个答案:

答案 0 :(得分:4)

您提供的正则表达式只匹配您尝试验证的整个字符串中的单个字符。您的方案中有几件事需要处理

  • 您希望匹配整个字符串,因此您的正则表达式必须以^(字符串的开头)开头,并以$结尾(字符串的结尾)。
  • 然后,您希望接受任意数量的字母数字字符,这是通过[a-zA-Z0-9]+完成的,此处+表示一个或多个字符。
  • 然后匹配点:\.(你必须在这里逃避它)
  • 最后再接受更多角色。

正则所有正则表达式将是:

^[a-zA-Z0-9]+\.[a-zA-Z0-9]+$

答案 1 :(得分:1)

您可以使用此regex

\\w*\\.\\w*

您可以尝试here

答案 2 :(得分:0)

尝试:

^([a-zA-Z0-9]+\.)+[a-zA-Z]$

答案 3 :(得分:0)

编辑:

尝试

([a-zA-Z0-9]+\.[a-zA-Z0-9]+)|(\.[a-zA-Z0-9]+)|([a-zA-Z0-9]+\.)

那是:[一个以点结尾的单词]或[两个单词和中间的点]或[以点开头的单词]

答案 4 :(得分:0)

使用此正则表达式^[a-zA-Z0-9]*\.[a-zA-Z0-9.]*$