首页 文章

RegEx for Javascript(替换函数)只允许字母和空格,但不能以空格开头?

提问于
浏览
0

好吧,在我需要的文本框的 keydown 事件中(使用 regexreplace ):

  • 第一个字符不是空格 .

  • 只允许字母 .

  • 仅在单词之间的整个字符串中允许一个空格 . 但是,如果用户按下空格键,它在一个 keydown 事件中,它只需要是文本框中的一个空格 .

一些例子:

don't pass ' My name is' (第一个字是空格)

pass 'My name is ' (与空间无关)

don't pass 'My name is 123' (包含数字)

我试过这个只用一个空间:

replace(/\s+/g,' ');

并且工作,但我不知道如何在同一个正则表达式中使用其他东西 .

2 回答

  • 0

    这个正则表达式会做到这一点

    /^[A-Za-z]{1}[A-Za-z\s]+$/
    

    分解

    ^ - 行首

    [A-Za-z] - 任何信件

    {1} - 正好是一个字母

    [A-Za-z\s] - 字母或空格字符

    + - 一个或多个

    $ - 行尾

  • 1

    终于我明白了:

    Html

    <input type="text" id="target">
    

    Js

    $( "#target" ).keyup(function() {
      var str = $(this).val();
      var res = str.replace(/\d+|^\s+$/g, '').replace(/\s+/g, ' ');
      $(this).val(res);
    });
    

    也许我的问题不太清楚,但你可以看到最终的结果fiddle

    EDIT:

    要不允许特殊字符,需要声明它们:

    str.replace(/[\"\'~`!@#$%^&()_={}[\]:;,.<>+\/?-]+|\d+|^\s+$/g, '').replace(/\s+/ig, ' ')
    

相关问题