我想定义一个'有效'输入,在字符串的结尾或开头不允许_-.
,只允许在中间。
可接受的字符(位置无关紧要):a-zA-Z0-9
和所有希伯来字母,我不知道如何在正则表达式中允许它们(可能只是硬编码所有这些字母?)
不可接受的字符(位置无关紧要):除我之前提供的特殊符号外的所有符号。
我不知道如何构建此模式,如果您可以在每个部分添加提示和注释,那么我将理解。谢谢!
这不是为了家庭作业,只是为了自学。
答案 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);