【发布时间】:2017-11-15 07:55:05
【问题描述】:
我正在研究一个正则表达式,允许逗号前最多 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;
}
我还想避免在输入字段中出现空白条目和空格。我想在实时更改事件中用空格替换不需要的字符。截至目前,我无法使用上述代码替换其他字符。
请建议如何形成完美的正则表达式来处理这种情况。
谢谢。
【问题讨论】:
-
即使没有模型和数据绑定,StepInput 可能对您引导和限制用户输入无效值很有帮助。正则表达式是a powerful tool but should not be overused,特别是如果已经有解决问题的替代方法。
标签: javascript regex input sapui5