在输入文本框中限制使用下划线(' _')

时间:2016-03-29 09:46:55

标签: javascript html regex html5

正则表达式,允许使用utf-8字符但限制下划线abd特殊字符(除了这一个 - )。
它允许下划线。我想限制它。 这是我的演示代码: https://plnkr.co/edit/Solap6eBGssvn7wVjkFn?p=preview

<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="style.css">
  <script src="script.js"></script>
</head>

<body>
  <SCRIPT LANGUAGE="JavaScript">
    <!--
    function demoMatchClick() {
      var re = new RegExp(document.demoMatch.regex.value);
      if (document.demoMatch.subject.value.match(re)) {
        alert("Successful match");
      } else {
        alert("No match");
      }
    }
  </SCRIPT>
  <P>regEx for unicode characters :</P>
  <FORM ID="demoMatch" NAME="demoMatch" METHOD=POST ACTION="javascript:void(0)">
    <P>Regexp:
      <INPUT TYPE=TEXT NAME="regex" VALUE="^([^\x00-\x7F]|[\w_\ \-])+$" SIZE=50>
    </P>
    <P>Subject string:
      <INPUT TYPE=TEXT NAME="subject" VALUE="This is a test of the JavaScript RegExp object" SIZE=50>
    </P>
    <P>
      <INPUT TYPE=SUBMIT VALUE="Test Match" ONCLICK="demoMatchClick()">
    </P>
  </FORM>
</body>

</html>

2 个答案:

答案 0 :(得分:2)

不要使用一些jQuery。检查输入键是否关闭,如果是减去AND移位,请阻止它。

HTML

<input type="text" class="js-input">

JS

// get field
var field = document.querySelector('.js-input');

// add keydown listener
field.addEventListener('keydown', function(e) {
    // 189 === minus 
  // with shift === _
    if (e.which === 189 && e.shiftKey === true) {
    e.preventDefault();
  }
});

演示: https://jsfiddle.net/jrck9m2r/1/

编辑: @Gaurav的答案不起作用:https://jsfiddle.net/Ley8mc19/2/

答案 1 :(得分:1)

使用一些jquery

$('input').on('input propertychange', function(event){
  if(event.which==95){
    return false;
  }
})

95是_的ASCII字符,这个jquery会检测到你写的_返回false会停止写它