首页 > 解决方案 > 带占位符的正则表达式

问题描述

var scale = $('#'+fields[i].id+'-scale').val();
var decimalOnly = '/^\s*-?[1-9]\d*(\,\d{1,'+scale+'})?\s*$/';
    if(fields[i].value != "" && !(fields[i].value).match(decimalOnly)) {
        $(fields[i]).addClass('form-attr-error');
            result = false;
    }
    else {
        $(fields[i]).removeClass('form-attr-error');
    }

在上面的正则表达式中,传递“比例”占位符值并比较value.match(RegEx)它不起作用。

但它像这样工作

value.match(/^\s*-?[1-9]\d*(\,\d{1,2})?\s*$/);

请帮我解决这个问题,我如何通过占位符值代替“2”。

标签: javascript

解决方案


.match将自动将字符串参数转换为正则表达式;如果您想明确说明,可以使用RegExp构造函数。但请注意,斜杠不是正则表达式的一部分,它们是正则表达式文字的一部分。即这些将做同样的事情:

foo.match(/a/)
foo.match("a")
foo.match(new RegExp("a"))

这些都将执行与第一组不同的相同操作:

foo.match(/\/a\/)
foo.match("/a/")
foo.match(new RegExp("/a/"))

前者将匹配一个字母序列a;后者将匹配三个字母的序列/a/

tl; dr:去掉decimalOnly.


推荐阅读