使用 RegEx 在键入时验证用户输入
Validating User Input While Typing using RegEx
我正在努力为以下标准编写正则表达式:
- 数字可正可负
- 可选 - 在开始时
- 小数点前1到5位数字
- 只有 2 位小数(可选)
- 阻止用户输入超过 1 个。或 -
这是我尝试实现的正则表达式,但对我不起作用。
^((-?[0-9]{1,5}(\.?){1,1}[0-9]{0,2})
它应该允许用户输入以下数字。
-1.12
12345
1
123
12.12
如有任何帮助,我们将不胜感激!
如果您想匹配以 .
结尾的字符串,例如 123.
demo of this regex
,正则表达式 ^(-?(\d{1,5}(\.\d{0,2})?)?)$
应该可以工作
否则,将 0
更改为 1
,如下所示:^(-?(\d{1,5}(\.\d{1,2})?)?)$
。然后它将只匹配小数点后有数字的字符串。
您发布的正则表达式允许小数点后超过 2 位的字符串,因为它在 2 位后停止匹配,即使字符串继续。在正则表达式的末尾添加 $
会阻止它匹配在我们想要的部分之后继续的字符串。
此正则表达式 ^(-?\d{1,5}(\.\d{0,2})?)$
将在用户完成输入后验证输入,因为我假设您不希望 -
在此时有效。
如果您想在输入时进行验证,您可以使用可选组来接受中间值,并在处理值时对整个模式进行最终检查。
^-?(?:\d{1,5}(?:\.\d{0,2})?)?$
说明
^
字符串开头
-?
可选连字符
(?:
非捕获组
\d{1,5}
匹配1-45位数字
(?:
非捕获组
\.\d{0,2}
匹配一个点和0-2位数字
)?
关闭组并使其可选
)?
关闭组并使其可选
$
字符串结束
要验证最终模式,您可以匹配可选的 -
、1-5 位数字和可选的小数部分:
^-?\d{1,5}(?:\.\d{1,2})?$
您可以使用
^-?\d{0,5}(?:(?<=\d)\.\d{0,2})?$
参见regex demo。
详情
^
- 字符串开头
-?
- 一个可选的 -
\d{0,5}
- 零到五位数
(?:(?<=\d)\.\d{0,2})?
- 一个可选的序列
(?<=\d)
- 当前位置的左边必须有一个数字
\.
- 一个点
\d{0,2}
- 零、一位或两位数
$
- 字符串结尾。
我正在努力为以下标准编写正则表达式:
- 数字可正可负
- 可选 - 在开始时
- 小数点前1到5位数字
- 只有 2 位小数(可选)
- 阻止用户输入超过 1 个。或 -
这是我尝试实现的正则表达式,但对我不起作用。
^((-?[0-9]{1,5}(\.?){1,1}[0-9]{0,2})
它应该允许用户输入以下数字。
-1.12
12345
1
123
12.12
如有任何帮助,我们将不胜感激!
如果您想匹配以 .
结尾的字符串,例如 123.
demo of this regex
^(-?(\d{1,5}(\.\d{0,2})?)?)$
应该可以工作
否则,将 0
更改为 1
,如下所示:^(-?(\d{1,5}(\.\d{1,2})?)?)$
。然后它将只匹配小数点后有数字的字符串。
您发布的正则表达式允许小数点后超过 2 位的字符串,因为它在 2 位后停止匹配,即使字符串继续。在正则表达式的末尾添加 $
会阻止它匹配在我们想要的部分之后继续的字符串。
此正则表达式 ^(-?\d{1,5}(\.\d{0,2})?)$
将在用户完成输入后验证输入,因为我假设您不希望 -
在此时有效。
如果您想在输入时进行验证,您可以使用可选组来接受中间值,并在处理值时对整个模式进行最终检查。
^-?(?:\d{1,5}(?:\.\d{0,2})?)?$
说明
^
字符串开头-?
可选连字符(?:
非捕获组\d{1,5}
匹配1-45位数字(?:
非捕获组\.\d{0,2}
匹配一个点和0-2位数字
)?
关闭组并使其可选
)?
关闭组并使其可选$
字符串结束
要验证最终模式,您可以匹配可选的 -
、1-5 位数字和可选的小数部分:
^-?\d{1,5}(?:\.\d{1,2})?$
您可以使用
^-?\d{0,5}(?:(?<=\d)\.\d{0,2})?$
参见regex demo。
详情
^
- 字符串开头-?
- 一个可选的-
\d{0,5}
- 零到五位数(?:(?<=\d)\.\d{0,2})?
- 一个可选的序列(?<=\d)
- 当前位置的左边必须有一个数字\.
- 一个点\d{0,2}
- 零、一位或两位数
$
- 字符串结尾。