允许中间的特定字符,但不允许在结尾或开头

时间:2012-04-21 09:20:43

标签: c# regex

我想定义一个'有效'输入,在字符串的结尾或开头不允许_-.,只允许在中间。

可接受的字符(位置无关紧要):a-zA-Z0-9和所有希伯来字母,我不知道如何在正则表达式中允许它们(可能只是硬编码所有这些字母?)

不可接受的字符(位置无关紧要):除我之前提供的特殊符号外的所有符号。

我不知道如何构建此模式,如果您可以在每个部分添加提示和注释,那么我将理解。谢谢!

这不是为了家庭作业,只是为了自学。

1 个答案:

答案 0 :(得分:1)

@"^[a-zA-Z\dא-ת][a-zA-Z_\-\.\dא-ת]*[a-zA-Z\dא-ת]$"

如果你想允许“_.-”没有重复:

@"^[a-zA-Z\dא-ת]([a-zA-Z\dא-ת]+[_\.\-]?)*[a-zA-Z\dא-ת]$"

如果你想在中间留出空格:

@"^[a-zA-Z\dא-ת][a-zA-Z_\-\.\d\sא-ת]*[a-zA-Z\dא-ת]$"

如果你想要空格+“_.-”没有重复:

@"^[a-zA-Z\dא-ת]([a-zA-Z\d\sא-ת]+[_\.\-]?)*[a-zA-Z\dא-ת]$"

所以使用正则表达式:

var isValid = Regex.IsMatch(input, @"...");

此外,如果您计划在代码中多次使用正则表达式,我建议添加RegexOptions.Compiled标志,以提高速度。

var isValid = Regex.IsMatch(input, @"...", RegexOptions.Compiled);
相关问题