我应该使用什么正则表达式

时间:2016-02-09 06:14:53

标签: c# .net regex

我试图设置一个条件,只允许使用字母

我的条件是

  if (Regex.IsMatch(txtfirstname.Text, "[A-Za-z]"))
  {
      usersEl.firstName = txtfirstname.Text;
  }

如果txt只是数字或其他符号,它不会进入块内,如果它是字母则进入它内部。 但问题是如果它是字母和数字,它也会进入块内,因为有数字所以它不应该出现!

任何人都可以给我一个正则表达式,如果我想要它只是字母或只有没有任何符号的数字。

6 个答案:

答案 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)

如果您想以更易读的形式可视化RegEx,请使用此站点:

http://regexper.com/#%2F%5E%5BA-z%5D%2B%24%2F

我已经包含了anand的答案。

答案 5 :(得分:0)

你可以使用LINQ,因为正则表达式涉及很多开销:

if (!String.IsNullOrEmpty(txtfirstname.Text) && txtfirstname.Text.All(c => Char.IsLetter(c)))
{
}

对于其他方案,请使用Char.IsDigitChar.IsLetterOrDigit