【问题标题】:VB.Net Validation: Checking if Text Contains Only LettersVB.Net 验证:检查文本是否仅包含字母
【发布时间】:2014-11-25 12:03:52
【问题描述】:

需要知道如何验证文本框的文本以确保它只包含不带空格的字母。

我希望存在某种可以帮助我的函数,比如“IsString”之类的。

【问题讨论】:

  • 您还可以从字符串中删除空格吗?或者你真的想验证其中的空间吗?

标签: regex vb.net string validation


【解决方案1】:

使用Regular Expression

if System.Text.RegularExpressions.Regex.IsMatch(TextBox.Text, "^[A-Za-z]+$")) ...

编辑

^ $ 字符是;它们分别表示匹配 startend-of-line,可用于防止子字符串/部分匹配。

例如正则表达式X 将匹配"X""AAAXAAA"^X$ 仅匹配"X",因为它的值可以被认为是"<start of line>X<end of line>"

【讨论】:

  • 谢谢,我知道如何使用 javascript 使用正则表达式,但以前从未在 VB.Net 中遇到过,代表经验和远见。你已经为我做的够多了,但如果你是错综复杂的,你能向我解释一下正则表达式的每个部分(“^[A-Za-z]+$”)是什么意思吗?我想我理解字母和“$”,它们用于将内容与字母(大写和小写)和符号进行比较,但是“^”是什么意思?
  • 其实^$在JS中是一样的,/x/只是new RegExp("x")的简写
【解决方案2】:

这将防止在文本框中输入除字母以外的任何内容。

Private Sub TextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox.KeyPress
    If Not Char.IsLetter(e.KeyChar) Then e.Handled = True  'ignore everything but letter keys
End Sub

【讨论】:

  • 谢谢,这很好地解决了我的问题,但它与我的风格和我正在制作的解决方案中已经内置的一般风格略有不同(用于学校)。但是,我很感谢你的时间,我会把它带走:D
  • 如果你这样做,别忘了处理粘贴
【解决方案3】:

您可以使用正则表达式,如下所示:

Return (New System.Text.RegularExpressions.Regex("^[a-zA-Z]{1,}$")).IsMatch(testValue)

【讨论】:

  • 谢谢!这将是与我对上述答案的评论类似的评论,但我注意到您的 RegEx 与上述不同。为什么? “{1,}”有什么作用?
  • @Jason -- 这意味着重复前面的值 -- 在这种情况下,从 azAZ 的任何字母 -- 至少 1 次,没有大写边界。为了更清楚地说明这一点:如果您使用{1,5},则意味着至少1次,最多5次,或者如果您使用{0,5},则意味着没有下限,但最多5次。
【解决方案4】:

为了简单起见:

Char.isletter(textboxname)

If char.isletter(textboxname)=false then
Msgbox(error message)
Textboxname.clear()
Textboxname.focus()
End if

【讨论】:

  • char.isletter 接受所有 ASCII 字符。如果您只期望字母表,这可能是一件坏事。
猜你喜欢
  • 2013-03-02
  • 2014-07-16
  • 2014-04-02
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
  • 2011-05-26
相关资源
最近更新 更多