允许在中间的特定字符,而不是在开始前或结束
问题描述:
我想定义一个“有效”的输入,这是_-.
将不会在年底或字符串的开头允许的,只允许在中间。允许在中间的特定字符,而不是在开始前或结束
可接受的字符(位置无所谓):a-zA-Z0-9
和所有的希伯来字母,我不知道如何让他们在一个正则表达式
(也许只是硬编码的所有的信吗?) 不可接受的字符(位置无关紧要):除了我之前提供的特殊符号之外的所有符号。
我不知道如何建立这种模式,如果你能在每个部分中添加提示和意见,所以我就明白了。谢谢!
这不是功课,只是为了自我学习。
答
@"^[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);
允许的符号,它们可以离开末端一个字符吗?可以有两个彼此相邻吗? (将“'一... Z'”是你会想要有效吗?) – 2012-04-21 09:35:04
这是一个伟大的一点,感谢指出了这一点:'a..b'是无效的,但是''a.b''是有效。使用@Yorye提供的模式,我该如何应用此设置?提供模式:'@ “^ [A-ZA-Z \ dא-ת] [。\ S \ W \א-ת\ - ] * [A-ZA-Z \ dא-ת] $”' – Novak 2012-04-21 09:40:58