javascript - 正则表达式:只有 1 个空格但不在开头,没有数字/特殊字符,空格之前或之后的任何字符串都需要至少有 2 个字母字符

标签 javascript jquery regex

我正在尝试创建一个函数来检查字符串是否包含数字、特殊字符或双空格,但我觉得我的编写方式不正确,而且也没有给出所需的结果。

要求:

<强>1。开头不得有空格。

<强>2。除连字符 (-) 外不允许使用任何特殊字符,并且这已经完成

<强>3。如果字符串中任何地方都有一个空格,则不允许有第二个空格

示例: 宽x深宽

这是不允许的。

这里实际发生的情况是,如果我在字符串后面插入一个空格,则它不允许超过一个空格,但如果我返回字符串之间的某个位置并在那里插入一个空格,那么它就允许该空格。

<强>4。空格之前或之后至少需要有 2 个字母字符。

这是不允许的:

库马尔

请帮帮我。

 $('#atul').on('input', function(evt) {
        var inputValue = $("#atul").val();
        var withoutSpclChar = new RegExp(/^[\w| |_-]+$/);
        if (!inputValue.match(withoutSpclChar)) {
            var newInputWithHas = $("#atul").val();
            var newInputWithoutHas = newInputWithHas.substring(0, newInputWithHas.length - 1);
            return $("#atul").val(newInputWithoutHas);
        }
        if ((inputValue.match(new RegExp(" ", "g")) || []).length > 1) {
            var newInputValue = $("#atul").val();
            var noDoubleSpace = newInputValue.replace(/  +/g, '');
            var NoSpaceinEnd = noDoubleSpace.replace(/ $/, "");
            return $("#atul").val(NoSpaceinEnd);
        }
        if(/\d/.test(inputValue)) {
          console.log("it has number");
          var noNumber = inputValue.replace(/[0-9]/g, '');
          return $("#atul").val(noNumber);
        }
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="" id="atul" name="">

最佳答案

编辑:这是您的答案的解决方案: https://jsfiddle.net/6dzf8rw7/1/

        $('#atul').on('input', function(evt) {

        var inputValue = $("#atul").val();
        inputValue = inputValue.replace(/[^a-zA-Z ]/g, "");
        $("#atul").val(inputValue);

        var withoutSpclChar = new RegExp(/^[\w| |_-]+$/);
        if (!inputValue.match(withoutSpclChar)) {
            var newInputWithHas = $("#atul").val();
            var newInputWithoutHas = newInputWithHas.substring(0, newInputWithHas.length - 1);
            return $("#atul").val(newInputWithoutHas);
        }
        if (inputValue.match(/\s+/g)) {
           $("#atul").val(spaceHandle(inputValue))
        }

        if ((inputValue.match(new RegExp(" ", "g")) || []).length > 1) {
            console.log();
            $("#atul").val(spaceHandle(inputValue))
            var newInputValue = $("#atul").val();
            var noDoubleSpace = newInputValue.replace(/  +/g, '');
            var NoSpaceinEnd = noDoubleSpace.replace(/ $/, "");
            return $("#atul").val(NoSpaceinEnd);
        }
        if(/\d/.test(inputValue)) {
          console.log("it has number");
          var noNumber = inputValue.replace(/[0-9]/g, '');
           return $("#atul").val(noNumber);
        }
    });

function spaceHandle(s) {
console.log(s);
    var replaced = s.split(' ');
    console.log(replaced);
    var final_string = '';
    $.each(replaced,function(index,value){
      if(index === 0 && value.length > 1){
       final_string = final_string+value+' ';
      }else{
        final_string = final_string+value;
      }
     })
    console.log(final_string);

    return final_string;
}

关于javascript - 正则表达式:只有 1 个空格但不在开头,没有数字/特殊字符,空格之前或之后的任何字符串都需要至少有 2 个字母字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57105806/

相关文章:

javascript - 使用 Javascript 更改 div 的背景图像

javascript - 当人们点击后退按钮时,如何防止浏览器执行一些 JavaScript?

javascript - 我的背景图片不会显示在 div 上

jquery/ajax shoutbox 不刷新内容但提交

javascript - 使用多个 html 页面或通过 javascript 显示/隐藏 div

javascript - 使用 javascript/jquery 从特定字符串获取数值

php - Laravel,使用jquery ajax返回响应400错误

regex - 在同一行捕获多个正则表达式模式

regex - 根据特定元素的位置在字符串向量中插入连字符或破折号

正则表达式来验证数字提交 -