我正在使用一个正则表达式,它只允许逗号之前的最多10位,逗号之后的最大3位。
到目前为止,我想出了如下结论:
^[1-9]{1}[0-9]{1,9}(,[0-9]{0,3})?$.
我将验证javascript中的输入。
我使用的是sap.m.input控件,用户的击键是在实时更改事件中捕获的。
以下示例被接受为用户输入:
1234567890,123 4,1 234,45 56457
输入必须以自然数开头,只有逗号才会出现。
使用上面提到的正则表达式,我可以避免第一个数字为零,但它没有考虑这个输入值- 1,23
。
我在应用程序中添加了以下代码:
var input = oEvent.getSource().getValue();
var isValid = false;
var regex = /^[1-9]{1}[0-9]{1,9}(,[0-9]{0,3})?$/;
isValid = regex.test(input);
if (isValid == false) {
// oEvent.getSource().setValueState("Error");
input = input.replace(/[^[1-9]{1}[0-9]{1,9}(,[0-9]{0,3})]/g,"");
oEvent.getSource().setValue(input);
return;
}
我还希望避免输入字段中的空白条目和空格。我希望在实时更改事件中用空格替换不想要的字符。到目前为止,我无法使用上述代码替换其他字符。
请建议如何形成完美的正则表达式来处理这种情况。
谢谢。
发布于 2017-11-15 00:02:56
^[1-9]\d{0,9}(,\d{0,3})?$
[1-9]
-第一个数字必须是1-9\d{0,9}
-在第一个数字之后,可以有0-9位数。,\d{0,3}
-逗号后面的3位数字()?
-逗号部分是可选的发布于 2017-11-15 00:03:01
你几乎没问题,除非在昏迷前不允许一个数字,然后开始减号。
试试这个:
var regex = /^-?[1-9][0-9]{0,9}(,[0-9]{0,3})?$/;
发布于 2017-11-15 00:07:20
如果你想接受负数,你甚至可以更进一步:
^-?[1-9]\d{0,9}(,\d{0,3})?$
通过接受-在你的字符串开头。
最后但同样重要的是,我建议在检查输入的有效性之前使用trim!用户倾向于在输入的末尾甚至开头添加不必要的空间。
祝好运
https://stackoverflow.com/questions/47302062
复制相似问题