【问题标题】:Prevent user from inputing dollar sign ($)防止用户输入美元符号 ($)
【发布时间】:2014-04-03 20:46:50
【问题描述】:

我想使用正则表达式来防止美元“$”符号被输入到表单中。我尝试了正则表达式,但似乎无法弄清楚。欢迎任何帮助。

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    StripNonAlphabetCharacters(TextBox1)
End Sub

        Public Sub StripNonAlphabetCharacters(ByVal input As TextBox)
        ' pattern matches any character that is NOT A-Z (allows upper and lower case alphabets)
    Dim rx As New Regex("[^a-zA-Z]")
    If (rx.IsMatch(input.Text)) Then
        Dim startPosition As Integer = input.SelectionStart - 1
        input.Text = rx.Replace(input.Text, "")
        input.SelectionStart = startPosition
    End If
End Sub

【问题讨论】:

  • 请分享一些代码
  • 我想使用正则表达式来防止美元“$”符号被输入到表单中。我尝试了正则表达式,但似乎无法弄清楚。欢迎任何帮助。
  • 试试这样Regex("[^$]")
  • 您的正则表达式应该可以工作,您是否尝试过单步执行代码?
  • 这是一个 ASP 应用程序?这应该在客户端代码中完成。即使在服务器上设置了回发来调用它,它也会非常缓慢。

标签: javascript asp.net regex vb.net


【解决方案1】:

Fiddle

你不需要使用正则表达式来解决这个问题。我觉得使用输入字段的onkeypress 事件处理程序是一个更好的解决方案。

var field = document.getElementsByTagName('input')[0];
field.onkeypress = function(e) {
    //check if the charCode of the symbol inputed is 36 (the character code of $)
    if (e.charCode === 36) {
        return false; //prevent it from being inputted into the field
    }  
};

事件处理程序被传递一个事件对象,该对象提供有关触发事件的操作的描述。 onkeypress 事件的有用属性之一是 charCode 属性,它显示按下的键的字符代码(我相信这些数字是字符的 ASCII 表示)。

【讨论】:

    【解决方案2】:

    试试这个表达式 => /^([^$])+$/

        expression = /^([^$])+$/;
    
        if( expression.test("String Value") ){
           alert("String value has no $");
        }else{
           alert("$ found in string");
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      相关资源
      最近更新 更多