用于SUVAT计算器的匹配小数/单字母/问号的正则表达式如何编写
适配SUVAT计算器输入规则的正则表达式
最终正则
如果允许输入任意单个英文字母,使用以下规则:
^(\d+(?:\.\d+)?|[a-zA-Z]|\?)$
如果仅允许输入SUVAT对应的5个字母(不区分大小写),可以收缩匹配范围:
^(\d+(?:\.\d+)?|[sSuUvVaAtT]|\?)$
如果需要支持负数输入(比如负加速度、负速度),给数字部分加可选负号即可:
^(-?\d+(?:\.\d+)?|[a-zA-Z]|\?)$
规则说明
- 首尾的
^和$是锚定符,确保匹配整个输入内容,不会出现前后多余字符的情况 - 三个分支用
|分隔,互斥匹配,不会出现混合类输入通过校验的问题:\d+(?:\.\d+)?:匹配纯数字/小数,支持整数(如2)和带小数点的小数(如2.3),?:用来标记非捕获组,不额外占用分组资源[a-zA-Z]:匹配单个大小写英文字母,可根据需求替换为指定字母范围\?:匹配单个问号,转义符\避免问号被识别为正则量词
校验效果
可通过校验的有效值
- 数字类:
0、5、2.3、123.456 - 字母类:
S、s、A、v - 未知值类:
?
无法通过校验的无效值
- 混合输入:
2.5s、s12、?3 - 多重复符号:
??、ss、1.2.3 - 空输入、其他特殊字符:
""、@、s?
内容的提问来源于stack exchange,提问作者Olivr
相关产品推荐
相关产品推荐

