如何检查带有空格的字符串没有数字? [复制]

Posted

技术标签:

【中文标题】如何检查带有空格的字符串没有数字? [复制]【英文标题】:How to check a string with spaces does not have digits? [duplicate] 【发布时间】:2020-08-30 09:30:06 【问题描述】:
protected void grvCustomers_OnRowUpdating(object sender, GridViewUpdateEventArgs e)

     var row = grvCustomers.Rows[e.RowIndex];
     var customerListIndex = row.DataItemIndex;
     var customerid = (int) grvCustomers.DataKeys[customerListIndex].Value;

     var newName = ((TextBox) row.Cells[1].Controls[0]).Text; //0 = id, 1 = Phonenumber, 2 = Name
     var newPhonenr = ((TextBox) row.Cells[2].Controls[0]).Text;
     if (newPhonenr.Length == 12)
     
         _c.UpdateCustomer(customerid, newName, newPhonenr);
         grvCustomers.EditIndex = -1;
         grvCustomers.DataSource = _c.GetAllCustomers();
         grvCustomers.DataBind();
     
     else
     
         errormessage2.Text = "Fill in a correct phone number!";
         errormessage2.Visible = true;
     

大家好,我如何检查我的newName 是否包含数字?我使用了Regex.IsMatch(),但我试图在诸如 John Doe 或 Christopher Philips 之类的名称中也允许使用空格。基本上,我试图允许名称带有空格,但同时检查它是否只是一个字符串。而且我真的不会像X Æ A-12 Musk 这样打字。

【问题讨论】:

我不确定你到底想做什么,但如果 newName 包含一个或多个数字,Regex.IsMatch(newName, "\\d"); 将返回 true。 我正在尝试找到一种解决方案,允许在网格视图中编辑带有空格的名称(如我提到的 John Doe),而名称中不包含数字(例如 John Doe123)。 好吧,正如我所说,您可以使用Regex.IsMatch() 来检查输入是否包含数字。但是请注意,在大多数情况下,对姓名isn't a good idea 施加限制(除非您有充分的理由)。 @AhmedAbdelhameed 并不是每个人都喜欢Elon Musk 足以允许合理的任意名称...... :) @AhmedAbdelhameed 我想要这个的原因是因为我正在制作一个 ASP.NET 网站,这实际上是今年最后一个也是最重要的学校项目。我尽量不让我的陪审团成员尽可能多地发现错误,以便他们评判我的工作。 【参考方案1】:

您想要做的是:允许 a-zA-z 和空格,但不允许 0-9,对吗?

这是 C# 中的正则表达式 ^[a-zA-Z ]*$,你可以试试。

对于那些更具体的字符,您可以自己将它们添加到正则表达式中,例如:

^[a-zA-Z '.-]*$ 也允许 '.-

请注意,- 应该是 [] 中的最后一个,因为它是 Regex 预定义的字符,在中间时会被视为排列信号。

【讨论】:

恭喜!现在,您不能让名为“d'Arras”的人(或具有“Jr.”后缀的人或名字中带有连字符的人或几乎任何名字包含单个非英文字母的人)使用您的应用程序。 @AhmedAbdelhameed 公平地说 OP 没有要求 Regular expression for first and last name validation,而是一些无法使用的特殊情况(我已将问题编辑得更……清楚?) @AlexeiLevenkov 是的。这个答案的问题是“不包含数字”!=“只包含英文字母和/或空格字符”。这很可能是 OP 想要的,但这绝对是问题中提到的。 @AhmedAbdelhameed 这个答案是新用户定期拖钓的一个例子 :) 我假设肖恩肖知道名称验证的正确答案(我在之前的评论中链接过),所以他们只是去做一些事情这看起来是正确的,希望 OP 投票/接受它。我想我应该添加第二个副本至少会有所帮助。 感谢阿列克谢列文科夫。而且我还编辑了我的答案以满足@AhmedAbdelhameed 提到的特定字符。请检查并询问是否有任何问题。【参考方案2】:

好的,如果我理解得很好,那么我认为您想要验证用户的名字和姓氏,并且您不想允许其中的数字。可能有不止一种解决方案,我在这里列出一个。

bool containsInt = "John Doe 1".Any(char.IsDigit)

如果字符串中有任何数字,则为return true,否则为false

顺便说一句,我强烈希望你看到这个Answer on SO。我正在从中复制一些文本:

您也可以允许所有字符,因为“123 456”实际上并不比“Abc Def”更差。

【讨论】:

以上是关于如何检查带有空格的字符串没有数字? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查字符串是不是为数字? [复制]

如何将空格和逗号分隔的数字字符串转换为 int 列表? [复制]

如何在胶合时分离(带有空格)字符串,使用数组中的键来检查它是否粘合?

除了文本,如何从文本中删除数字、标点、空格和特殊字符? [复制]

如何在 JavaScript 中输出带有前导零的数字? [复制]

如何正确排序带有数字的字符串? [复制]