从字符串中jQuery Regex
jQuery Regex from String
我有以下Regex,它来自HTML元素上的数据属性:
/^$|^[0-9]{2}.[0-9]{4}$/g
当我(手动)这样做时:
/^$|^[0-9]{2}.[0-9]{4}$/g.test('01.2012');
它工作并返回true
。
当我把Regex放在这样的变量中时:
var inputRegex = $(this).attr('data-validation');
做:
inputRegex.test(input);
我得到:
inputRegex.test不是函数。
我知道这是因为inputRegex是一个String,String没有测试函数,但当我创建RegExp对象(new RegExp($(this).attr('data-validation')
)时,它会通过转义来破坏我的正则表达式:
/'/^$|^[0-9]{2}.[0-9]{4}$'/g/
如何将数据属性值用作正则表达式?请注意,我不能执行:var regex = new RegExp(string, 'g');
,因为正则表达式是从属性中预定义的。
var pattern = ''d+';
var regExp = new RegExp(pattern, 'g');
'1234dasf13241234'.match(regExp)
这是你需要的吗?
var pattern = $(this).attr('data-validation');;
var regExp = new RegExp(pattern, 'g');
regExp.test(input);
在您的情况下
您的问题是,您需要从元素的属性中检索regex模式,但它返回string,并且您希望javascript代码中的字符串值像inline一样,就像简单地声明regex一样。如果这真的是你想要实现的,最接近的解决方案是使用eval函数,请参阅下面的更新代码:
var stringreg = "var inputRegex =" + $("#test").attr('data-validation') + ";"
eval(stringreg);
inputRegex.test(input);
这可能有助于
var validation = "/^$|^[0-9]{2}.[0-9]{4}$/g"; //$(this).attr('data-validation')
var startIndex = validation.indexOf('/')+1
var lastIndex = validation.lastIndexOf('/');
var pattern = validation.substring(startIndex,lastIndex);
var options = validation.substring(lastIndex+1);
var regExp = new RegExp(pattern, options);
regExp.test('01.2012');
// true
相关文章:
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 如何在jquery+javascript中只在输入框中输入数字(使用regex)
- jQuery-Regex以防止任何特殊字符
- 使用jquery或regex,带点但不带点的拆分字符串位于单引号中
- jQuery regex从文本链接-添加不需要的域到链接
- 使用jquery查找regex匹配的元素
- Jquery-Regex按键操作在Chrome和Firefox中有所不同
- jQuery regex标记换行
- 从字符串中jQuery Regex
- JavaScript/jQuery大小写无关RegEx替换
- jQuery函数中的Regex将匹配ID+任何数字
- jQuery:如何将RegEx匹配的纯文本包装在锚标记中
- 自动替换为jquery regex
- 在附加方法jquery validate中为特殊字符使用regex
- jquery regex表达式警报框
- JQuery验证Regex密码验证
- 使用jquery regex在文本字段中输入0到100
- 在jquery选择器中获取id或类名,使用PHP的regex
- Regex jQuery find(“option:[text^='”]) 错误高于 即 8 和 chrome
- Regex JQUERY Validation