使用正则表达式检查字符串和整数的组合
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") >= 0
您的正则表达式模式看起来非常错误。 +
是一个重复操作符,应该出现在一个模式之后。 <number>
用于计数重复,而不是用于您尝试使用它的内容。
如果您正在寻找 "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 回调中,以便您可以测试其他字符串或在更改某些内容后对其进行检查。
【讨论】:
以上是关于使用正则表达式检查字符串和整数的组合的主要内容,如果未能解决你的问题,请参考以下文章