正则表达式允许句号,除非它是单独的

时间:2017-10-05 16:09:22

标签: c# regex

我正在尝试创建一个名称验证正则表达式,允许用户使用St. Germain这样的名称,但我不想要只有.这样的句点的名称接受。

我当前的正则表达式为/^[A-Za-z\ -\.\']+$/

2 个答案:

答案 0 :(得分:1)

取自@Mong Zhu的例子,但允许第一个单词也没有点:

\w+\.?\s?\w+

答案 1 :(得分:0)

您当前的正则表达式有一个潜在的不需要的错误\ -.,它将匹配从空格到点的范围内的任何字符。我不确定这是否是预期的行为,如果是这样,你可以使用下面的第二个正则表达式。

代码

版本1

See regex in use here

^(?!\.+$)[a-zA-Z .'-]+$

版本2

^(?!\.+$)[a-zA-Z -.']+$

结果

输入

username
.
Something.a
...
.Some
some. some
some.

输出

注意:以下只显示匹配

username
Something.a
.Some
some. some
some.

说明

  • ^在行首处断言位置
  • (?!\.+$)否定前瞻确保后面的内容不是点字符\.字面上,一次或多次,在行尾声明结束位置
  • [a-zA-Z .'-]+a-zA-Z .'-中任意一个<无限次
  • 之内的任何字符
  • $断言行尾的位置

另外

您可能希望使用p{L}代替a-zA-Z来接受外国字符