gpt4 book ai didi

javascript - 如何根据用户输入动态创建正则表达式

转载 作者:行者123 更新时间:2023-11-29 22:05:18 25 4
gpt4 key购买 nike

我正在制作一个程序,它从用户那里获取输入,然后使用该输入生成正则表达式。

下面是一些示例代码:

<input id="a" type="text" />
<input type="button" value="Create" id="b" />
<script>
(function (z , code) {
var input = document.getElementById("a"),
b = document.getElementById("b");
function primary(){
var regEx = new RegExp("[A-Z]{3}[ ]\d{9}[ ]" + input.value.toUpperCase(), "g");
alert(regEx);
};
b.addEventListener("click",function(){
primary();
}, false);
}(this, document));
</script>

FIDDLE

它可以接受这个:

假设我使用 FooBar 作为我的输入。我没有创建一个表示 /[A-Z]{3}[ ]\d{9}[ ]FOOBAR/g 的正则表达式,而是一个表示 /[A-Z] 的正则表达式{3}[ ]d{9}[ ]FOOBAR/gd 而不是 \d

为什么这不能正常工作?我该如何纠正这个问题?

谢谢。

最佳答案

根据 MDN RegExp docs ,

When using the constructor function, the normal string escape rules (preceding special characters with \ when included in a string) are necessary. For example, the following are equivalent:

var re = /\w+/;
var re = new RegExp("\\w+");

在您的正则表达式中,\d 是一个特殊字符

\d Matches a digit character in the basic Latin alphabet. Equivalent to [0-9].

For example, /\d/ or /[0-9]/ matches '2' in "B2 is the suite number."

所以,你的正则表达式,应该是这样的

[A-Z]{3}[ ]\\d{9}[ ]   //\\d instead of \d

关于javascript - 如何根据用户输入动态创建正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21298929/

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