使用正则表达式检查字符串和整数的组合

Posted

技术标签:

【中文标题】使用正则表达式检查字符串和整数的组合【英文标题】:Check a combination of string and integer using regex 【发布时间】:2021-09-18 03:04:08 【问题描述】:

我现在正在尝试从文本框中获取输入,如果文本框值与正则表达式匹配,我想显示警报。

我想使用正则表达式检查"1702, Belgium""Belgium, 1702",但我得到了空值。

<script>
   $(document).ready(function()
       var r =/+1702/;
       var v=$(".a").val();

       alert(v.match(r));
   );
</script>
<body>
   <input type="text" class="a" value="1702 Belgium"/>
</body>

【问题讨论】:

为什么不使用直接字符串比较字符串“1702 Belgium”和“Belgium”.. 只需创建一个包含字符串的数组并使用包含方法来检查它 如果你能解决这个问题请回答@Sarath /+1702/ 不是有效的正则表达式。如果你想检查一个字符串是否包含1702,你可以使用正则表达式/1702/,甚至更简单——v.indexOf("1702") &gt;= 0 您的正则表达式模式看起来非常错误。 + 是一个重复操作符,应该出现在一个模式之后。 &lt;number&gt; 用于计数重复,而不是用于您尝试使用它的内容。 如果您正在寻找 "1702, Belgium""Belgium, 1702",那么它与您的 "1702 Belgium 值不匹配 【参考方案1】:

既然我们只有 2 个字符串需要比较,为什么不能用常量数组(“1702, Belgium”和“Belgium, 1702”)来比较,而不是使用正则表达式。

与正则表达式相比,上述方式更容易理解。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
   $(document).ready(function()
       var valuesToCompare = ["1702, Belgium", "Belgium, 1702"]
       
       var v = $(".a").val().trim();
       alert(valuesToCompare.includes(v));
       
       // we can also use indexof to check 
       // alert(valuesToCompare.indexOf(v) !== -1);
   );
</script>
<body>
   <input type="text" class="a" value="1702, Belgium"/>
</body>

【讨论】:

【参考方案2】:

考虑以下示例。

$(function() 
  $("input.a").next("button").click(function(event) 
    var currentValue = $("input.a").val();
    var currentIndex = currentValue.indexOf("1702")
    if (currentIndex >= 0) 
      alert("1702 Found at " + currentIndex);
    
  );
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="a" value="1702 Belgium" /> <button>Check</button>

.indexOf() 将为您提供字符串在字符串中存在的位置。它对数组做同样的事情。我已将代码移动到 Click 回调中,以便您可以测试其他字符串或在更改某些内容后对其进行检查。

【讨论】:

以上是关于使用正则表达式检查字符串和整数的组合的主要内容,如果未能解决你的问题,请参考以下文章

在 1 中组合 2 个或多个正则表达式

类和正则表达(自动更正,和代数运算)

正则表达式

常用正则表达式

js如何正则验证密码

正则表达式摘要