Javascript regex条件不适用于聚合物纸张输入,如何只允许纸张输入小数?
我试图只允许在纸张上输入小数。以下是我的情况 不应允许e 应允许+,-例如:-23.43 点后只允许有12个值(十进制),例如:107.123456789012 所以我试着低于正则表达式,但都不起作用Javascript regex条件不适用于聚合物纸张输入,如何只允许纸张输入小数?,javascript,regex,polymer,Javascript,Regex,Polymer,我试图只允许在纸张上输入小数。以下是我的情况 不应允许e 应允许+,-例如:-23.43 点后只允许有12个值(十进制),例如:107.123456789012 所以我试着低于正则表达式,但都不起作用 ^(?!-0(\.0+)?$)-?(0|[1-9]\d*)(\.\d{1,12})?$ /^(?!-0(\.0+)?$)-?(0|[1-9]\d*)(\.\d+)?$/ <paper-input allowed-pattern="^(?!-0(\.0+)?$)
^(?!-0(\.0+)?$)-?(0|[1-9]\d*)(\.\d{1,12})?$
/^(?!-0(\.0+)?$)-?(0|[1-9]\d*)(\.\d+)?$/
<paper-input allowed-pattern="^(?!-0(\.0+)?$)-?(0|[1-9]\d*)(\.\d+)?$">
</paper-input>
^(?)-0(\.0+)-?(0 |[1-9]\d*)(\.\d{1,12})$
/^(?!-0(\.0+)-?(0 |[1-9]\d*)(\.\d+)$/
上面的正则表达式只包含整数,不接受小数。所以试了一个以下。工作正常。但不知道如何限制十进制。我希望在点(十进制)后只允许12个值
您可以使用此
^[+-]?\d+\.\d{1,12}$
解释
-锚定到字符串的开头^
-匹配一个或多个数字[+-]?\d+
-匹配\。
-匹配1到12位数\d{1,12}
const regex=/^\d+\.\d{1,12}$/gm;
常量str=`1.1
0
1.123456789123
a1223
0.1111
1.abv
`;
让m;
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
//可以通过'm`-变量访问结果。
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);
});
}
您可以使用此
^[+-]?\d+\.\d{1,12}$
解释
-锚定到字符串的开头^
-匹配一个或多个数字[+-]?\d+
-匹配\。
-匹配1到12位数\d{1,12}
const regex=/^\d+\.\d{1,12}$/gm;
常量str=`1.1
0
1.123456789123
a1223
0.1111
1.abv
`;
让m;
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
//可以通过'm`-变量访问结果。
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);
});
}
:
图案 — 用于验证输入值的正则表达式模式
/**
*对于该输入,“EN123456”是一个有效值,
*但“EN123456”或“EN123456”是无效值
*因为有额外的字符
*值与模式不匹配
*/
允许模式 — 限制允许键入的字符的模式
//只接受字母
//只接受数字
//不接受任何内容,因为一个字符不能匹配此模式
我们应该使用:
<paper-input pattern="^(?!-0(?:\.0+)?$)-?(?:0|[1-9]\d*)(?:\.\d+)?$">
我还将捕获组更改为非捕获组,这样效率更高。:
图案 — 用于验证输入值的正则表达式模式
/**
*对于该输入,“EN123456”是一个有效值,
*但“EN123456”或“EN123456”是无效值
*因为有额外的字符
*值与模式不匹配
*/
允许模式 — 限制允许键入的字符的模式
//只接受字母
//只接受数字
//不接受任何内容,因为一个字符不能匹配此模式
我们应该使用:
<paper-input pattern="^(?!-0(?:\.0+)?$)-?(?:0|[1-9]\d*)(?:\.\d+)?$">
我还将捕获组更改为非捕获组,效率更高。使用此
^\d+\.\d{1,12}$
no-its-not-working-allowed模式=“[\d+\.\d{1,12}]”。我可以在decimal@CodeManiacyYou missed$
中输入12个以上的值end@CodeManiac它对PolymerJ不起作用。即使在添加了$:-/之后,您的正则表达式对我来说仍然非常有效。对于哪些值失败?请使用此^\d+\.\d{1,12}$
no-its-not-working-allowed pattern=“[\d+\.\d{1,12}]”。我可以在decimal@CodeManiacyYou missed$
中输入12个以上的值end@CodeManiac它对PolymerJ不起作用。即使在添加了$:-/之后,您的正则表达式对我来说仍然非常有效。它失败的原因是什么?它与要求的-23.43
不匹配,并且与不需要的000000.00000
匹配。@t同意第一个。但我不确定second one op是否想要它?根据他们的正则表达式,它不匹配前导零0123.456
和负全零-0.000
,但它匹配0.000
(点前仅1个零)这不匹配-23.43
,并匹配不需要的000000.00000
。@t同意第一个。但我不确定第二个一op是否想要它?根据他们的正则表达式,它不匹配前导零0123.456
和负全零-0.000
,但它匹配0.000
(点前仅1个零)它不工作。它允许字母而不限制十进制。能够输入12个以上的十进制值
@Toto@Munna:然后添加pattern allowed=“[0-9.-”
在pattern=“^(?)-0(?:\.0+)-?(?:0 |[1-9]\d*)(?:\.\d+)?$”
它不工作。它允许字母而不限制十进制。能够输入12个以上的十进制值
@Toto@Munna:然后在pattern=“^(?)-0(?:\.0+)-?(?:0 |[1-9]\d*)(?:\.\d+)”
<paper-input pattern="^(?!-0(?:\.0+)?$)-?(?:0|[1-9]\d*)(?:\.\d+)?$">