将两个正则表达式合并为一个
Combine two regex expressions into one
正则表达式必须匹配所有正双精度数,小数点后最多两位数,大于 0.01 的数字以及科学记数法,例如(1.0E7).
我设法分别解决了这两个问题。
匹配所有小数点后最多2位且大于0.01的正双精度:
"^(?!0+\.0+$)^\d+(?:\.\d{1,2})?$"
对于包括科学记数法在内的任何数字:
"^[+-]?\d+(?:\.\d*(?:[eE][+-]?\d+)?)?$"
当我想把它们合二为一时,问题就来了。
我尝试了 here 中描述的方法,但 none 对我有用。
JavaScript/AngularJS 是重要的语言。
有什么建议吗?
您可以将正则表达式分成多个块
(^(?!0+\.0+$)^\d+(?:\.\d{1,2}))?$ ?(^[+-]?\d+(?:\.\d*(?:[eE][+-]?\d+)?)?$)
尝试:
- 剥离
^$
- 将每个原始正则表达式封装到一个 non capturing 组中
- 'OR'两组
- 将整体围成一个非捕获组
- 重新添加
^
$
到整个表达式。
结果:
^(?:(?:(?!0+\.0+$)^\d+(?:\.\d{1,2})?)|(?:[+-]?\d+(?:\.\d*(?:[eE][+-]?\d+)?)?))$
正则表达式必须匹配所有正双精度数,小数点后最多两位数,大于 0.01 的数字以及科学记数法,例如(1.0E7).
我设法分别解决了这两个问题。
匹配所有小数点后最多2位且大于0.01的正双精度:
"^(?!0+\.0+$)^\d+(?:\.\d{1,2})?$"
对于包括科学记数法在内的任何数字:
"^[+-]?\d+(?:\.\d*(?:[eE][+-]?\d+)?)?$"
当我想把它们合二为一时,问题就来了。
我尝试了 here 中描述的方法,但 none 对我有用。 JavaScript/AngularJS 是重要的语言。
有什么建议吗?
您可以将正则表达式分成多个块
(^(?!0+\.0+$)^\d+(?:\.\d{1,2}))?$ ?(^[+-]?\d+(?:\.\d*(?:[eE][+-]?\d+)?)?$)
尝试:
- 剥离
^$
- 将每个原始正则表达式封装到一个 non capturing 组中
- 'OR'两组
- 将整体围成一个非捕获组
- 重新添加
^
$
到整个表达式。
结果:
^(?:(?:(?!0+\.0+$)^\d+(?:\.\d{1,2})?)|(?:[+-]?\d+(?:\.\d*(?:[eE][+-]?\d+)?)?))$