javascript - 带占位符的正则表达式
问题描述
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”。
解决方案
.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
.
推荐阅读
- java - 带有JDK11客户端的https代理
- python - 为什么 pandas apply() 函数的行为在 pandas 1.1 中发生了变化?
- c# - 试图从数据库绑定下拉列表得到错误
- java - 如何从 Java 执行安装在 Python 虚拟环境中的 Python 工具
- c# - Azure.Messaging.EventHubs 与 WindowsAzure.ServiceBus 产生的消息有区别吗?
- amazon-web-services - VPC 的本地等价物
- c# - 用于寄存器读取的 C# MODBUS RTU
- python - driver.execute_script("window.history.go(-1)") 在 chrome 驱动程序中不起作用
- hdfs - 如何将数据从 CSV 加载到 impala 的外部表中
- python - 基于一个条件,我想分离列并在不同的数据框中添加值