我试图设置一个条件,只允许使用字母
我的条件是
if (Regex.IsMatch(txtfirstname.Text, "[A-Za-z]"))
{
usersEl.firstName = txtfirstname.Text;
}
如果txt只是数字或其他符号,它不会进入块内,如果它是字母则进入它内部。 但问题是如果它是字母和数字,它也会进入块内,因为有数字所以它不应该出现!
任何人都可以给我一个正则表达式,如果我想要它只是字母或只有没有任何符号的数字。
答案 0 :(得分:1)
您只能将^[A-Za-z]+$
用于字母,^\d+$
仅用于数字。
答案 1 :(得分:1)
以下是类似问题的链接:Regular Expression to match only alphabetic characters
TLDR; ^[A-Za-z]+$
插入符^
表示它只匹配字符串的开头。
+
用于重复:匹配模式(按字母顺序)1次或更多次
$
表示它将匹配行尾
这意味着没有空格。
"aasdfasdfasdfasdfasdf" --Match
"asdfasdf asfasdf asdf" --No Match
"asdfasfasdf " --No Match
(blank line) --No Match
"A" --Match (if no spaces after the A)
将[A-Za-z]
替换为[0-9]
以仅匹配数字
答案 2 :(得分:0)
您可以使用以下代码
执行此操作var filter = @"/^[A-z]+$/";
Regex reg = new Regex(filter);
if (reg.IsMatch(txtfirstname.Text))
{
usersEl.firstName = txtfirstname.Text;
}
希望这会有所帮助
答案 3 :(得分:0)
仅限数字,您可以使用
([0-9])+
对于非数字字符,您只需使用
即可(\D)+
答案 4 :(得分:0)
答案 5 :(得分:0)
你可以使用LINQ,因为正则表达式涉及很多开销:
if (!String.IsNullOrEmpty(txtfirstname.Text) && txtfirstname.Text.All(c => Char.IsLetter(c)))
{
}
对于其他方案,请使用Char.IsDigit
,Char.IsLetterOrDigit
等