正则表达式只允许一个特殊字符?

时间:2014-08-13 10:21:07

标签: c# regex validation

我正在尝试为输入中只允许一次撇号,短划线和句点的名称添加验证。

我尝试使用以下表达式:

name= /^[a-zA-Z-,]+(\-\.\'\s{0,1}[a-zA-Z-, ])*$/

但是这些值只接受字母后的一个字符 如何指定在正则表达式中只允许一次的字符 我的表达中有什么错误?

编辑:

^[-'.a-zA-Z0-9][a-zA-ZÀ-ÿ\-\.\'\s|]{0,25}$

但这允许特殊字符允许多次。

2 个答案:

答案 0 :(得分:1)

  

我正在尝试为输入中只允许一次撇号,短划线和句号的名称添加验证。

您可以使用这个基于前瞻性的正则表达式:

^(?=[a-zA-Z,]*['.-][a-zA-Z,]*$)[a-zA-Z,'.-]+$

RegEx Demo

这里(?=.*?['.-][^'.-]*$)是一个先行,确保在输入中只允许一个撇号或短划线或句号。

答案 1 :(得分:-1)

使用可选的量词?

^[a-zA-Z-,]*[-.'\sÀ-ÿ|]?[a-zA-Z-,]*$

这是UPDATED regex demo