gpt4 book ai didi

jquery - 如何检查字符串是否与给定的模式匹配?

转载 作者:行者123 更新时间:2023-12-01 04:03:55 24 4
gpt4 key购买 nike

有一个像这样的字符串:'XXX-XXX-XXX'; 用户可以更改它。比我有另一个像这样的字符串,它使用该字符串中的字符来生成序列号: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 这可以由用户更改。

现在,我需要循环遍历一堆输入值以确定它们是否与公式匹配(始终只有 X 和破折号。注意:破折号甚至可能不存在于公式中,这是用户定义的,可以从内部更改完全不同的输入字段)。

基本上,还有另一组输入字段:

<div class="check_these">
<input type="text" class="p-serials" name="pserials[]" value="YER-CGH-JOP" />
<input type="text" class="p-serials" name="pserials[]" value="BAB-CC1-D80" />
<input type="text" class="p-serials" name="pserials[]" value="JUQ-P" />
<input type="text" class="p-serials" name="pserials[]" value="XXX-XXX-XXX" />
</div>

因此,我们有 var Formula = 'XXX-XXX-XXX'; 变量以及字符串中允许的可能字符 var chrs = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

那么,如何更改下面的代码,使其仅返回匹配的代码:

var currMatches = $(".p-serials").map(function () {
// Need to match only formula numbers in here!
return $(this).val();
}).get();

因此,根据上面的输入,currMatches 应等于:["YER-CGH-JOP", "XXX-XXX-XXX"]

因为这些是唯一匹配允许的公式和字符的。

最佳答案

这有点难看,但您可以使用允许的字符字符串和提供的模式字符串来使用 X 的字符串替换来构建正则表达式。从那里您可以循环输入并根据表达式测试值。像这样的事情:

var chrs = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // assume this is retrieved from a user input
var format = 'XXX-XXX-XXX'; // assume this is retrieved from a user input
var re = new RegExp('^' + format.replace(/X/g, "[" + chrs + "]") + '$');

var currMatches = $(".p-serials").map(function () {
if (re.test(this.value))
return this.value;
return;
}).get();

Example fiddle

如果您想让正则表达式不区分大小写,可以将标志添加到构造函数中:

new RegExp('^' + format.replace(/X/g, "[" + chrs + "]") + '$', 'i')

另请注意,您需要对此进行大量字符串清理,以确保用户输入不会干扰可识别的正则表达式运算符。

关于jquery - 如何检查字符串是否与给定的模式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33808721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com