如何从字符串创建正则表达式
How to create regular expression from string?
这里也提出了同样的问题:如何将正则表达式作为函数参数传递,但我仍然无法让它工作。
这是我用来测试电子邮件的正则表达式的字符串表达式:
var regexp="^(([^<>()[']''.,;:'s@'"]+('.[^<>()[']''.,;:'s@'"]+)*)|('".+'"))@(('[[0-9]{1,3}'.[0-9]{1,3}'.[0-9]{1,3}'.[0-9]{1,3}'])|(([a-zA-Z'-0-9]+'.)+[a-zA-Z]{2,}))$";
如果我把它放到Firebug上,像这样执行:
/^(([^<>()[']''.,;:'s@'"]+('.[^<>()[']''.,;:'s@'"]+)*)|('".+'"))@(('[[0-9]{1,3}'.[0-9]{1,3}'.[0-9]{1,3}'.[0-9]{1,3}'])|(([a-zA-Z'-0-9]+'.)+[a-zA-Z]{2,}))$"/.test("test@domain.com")
它会给出我想要的东西,但如果将其作为参数传递给函数:
function bool validate(var value, var regexp){
//escape special characters
regexp=String(regexp).replace(/([-()'[']{}+?*.$'^|,:#<!''])/g, '''$1').replace(/'x08/g, '''x08');
return new RegExp(regexp,'g').test(value)
}
喜欢这个:
validate("test@domain.com",regexp);
它会给我假的。请说出我犯了什么错误,谢谢。
更新:抱歉,正如@Bhojendra - C-Link尼泊尔所说,将GWT的JSNI代码翻译成这个时有一个打字错误,正确的代码应该是:
function validate(value, regexp){
//escape special characters
var regexp = regexp.replace(/([-()'[']{}+?*.$'^|,:#<!''])/g, '''$1').replace(/'x08/g, '''x08');
return new RegExp(regexp,'g').test(value);
}
但它仍然不起作用。
替换此行:
function bool validate(var value, var regexp){
有了这个:
function validate(value, regexp){
经过一些修改和拼写错误修复后,以下是代码:
function validate(value, regexp){
//escape special characters
var regexp = regexp.replace(/([-()'[']{}+?*.$'^|,:#<!''])/g, '''$1').replace(/'x08/g, '''x08');
return new RegExp(regexp,'g').test(value);
}
相关文章:
- 使用变量中的 gi 标志创建正则表达式
- 从对象键创建正则表达式
- 如何创建正则表达式 查找 JS 文件(或 JSON)中的所有字符串
- 如何从字符串创建正则表达式
- 如何为此格式创建正则表达式B001169875
- 如何创建正则表达式javascript函数来匹配特定的字符串组合
- 如何为 -90 到 -90 字符串接受创建正则表达式
- 如何创建正则表达式检查罗马数字
- 用javascript创建正则表达式
- 如何为这些句子创建正则表达式
- 创建正则表达式数组
- Javascript RegExp:使用变量创建正则表达式
- JavaScript以编程方式创建正则表达式
- 为javascript创建正则表达式
- 在JavaScript中创建正则表达式的问题
- 如何从JS对象的键创建正则表达式
- 如何在javascript中为文件夹名称创建正则表达式
- 如何创建正则表达式以在较大字符串中查找子字符串
- 使用RegExp动态创建正则表达式,并过滤内容
- 从掩码值创建正则表达式模式以验证邮政编码