【发布时间】:2020-03-15 05:23:34
【问题描述】:
我知道这个问题已经有了答案。我已阅读此 [答案][1]。但这对我不起作用。由于我是 regEx 和 js 的新手,所以我不明白他们为什么使用下面这些类型的代码来传递参数。
var replace = "regex";
var re = new RegExp(replace,"g");
我附上了我用 JSP 编写的代码。我使用了引导验证器。请在下面找到它
/* Get the domain name from the controller */
var domainName = ${domainName}
/*Validation part*/
email: {
trigger: 'blur',
validators: {
notEmpty: {
message: 'The email address is required'
},
regexp: {
regexp : /"^([\w-\.]+)@" + domainName/,
message: 'The domain name is wrong and your domain name is: ' + domainName
}
}
}
这里我将正则表达式写为 /"^([\w-.]+)@" + domainName/。在消息中,我将变量名称写为 domainName。因此该消息已显示在 GUI 中。我需要知道如何将变量(域名)传递给正则表达式。请解释一下如何做到这一点?
编辑 1: 如果我像这样对 regEx 进行硬编码,它就可以工作。但是硬编码并不是个好主意。
regexp : /^([\w-\.]+)@(example.com|example1.com|uk.co|gmail.com)$/,
回答: 我解决了这个问题。 获得域名后,我将正则表达式和域名划分为单独的变量,并将它们连接到变量(模式)中。
var domainName = ${domainName}
const pattern1 = String.raw`([\w-\.]+)`;
const pattern2 = (domainName);
const pattern = new RegExp("^" + pattern1 + "@" + pattern2 + "$");
我已经在验证部分提到了变量“pattern”并且它成功地工作了。
email: {
trigger: 'blur',
validators: {
notEmpty: {
message: 'The email address is required and cannot be empty'
},
regexp: {
regexp : pattern,
message: 'The domain name is wrong and your domain name is: ' + domainName
}
}
},
[1]: https://stackoverflow.com/questions/494035/how-do-you-use-a-variable-in-a-regular-expression
【问题讨论】:
-
请向我们展示这段代码,因为它在浏览器中呈现 - 尝试同时使用两种不同的语言进行调试并不好玩!
-
@Mike Brokington 我附加的代码仅取自相应的 JSP 页面。正如我在第一行代码中提到的那样,我使用 EL 从控制器获取了 domainName。
-
@Toto 正确阅读我的问题
标签: javascript regex bootstrapvalidator