首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >验证度和字符(Regex)

验证度和字符(Regex)
EN

Stack Overflow用户
提问于 2014-07-09 11:08:31
回答 2查看 479关注 0票数 1

我需要验证来自QLineEdit的给定字符串。真实输入: 355.12°L

双数必须在0-360之间,最后一个字符必须是L或R。我使用了度(°)的QString掩码和360度的this example,但我不能同时使用掩码和QDoubleValidator。看起来只有QRegExp才能解决这个问题。

我的面具线:

代码语言:javascript
运行
复制
">999.99°A"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-09 11:40:00

代码语言:javascript
运行
复制
((?:[012]?[0-9]{1,2}|3(?:[0-5][0-9]|60))(?:\.[0-9]{0,2})?)°[LR]

试试上面的模式。我不确定qregexp是否支持(?:)模式。

票数 1
EN

Stack Overflow用户

发布于 2014-07-09 12:18:17

我建议的模式是刻意长和冗余的,以尽可能提高效率(目标是减少最可能的regex引擎工作)

代码语言:javascript
运行
复制
QRegExp exp("^(?:[1-2][0-9]{0,2}(?:\\.[0-9]{1,2})?|3(?:[0-5]?[0-9]?(?:\\.[0-9]{1,2})?|60(?:\\.00?)?)|[4-9][0-9]?(?:\\.[0-9]{1,2})?|0(?:\\.[0-9]{1,2})?)° ?[LR]$");
lineEdit_->setValidator(new QRegExpValidator(exp, this));

这种模式禁止前导零点为数十和数百,并使小数可选限制为两位数(因此,尾随或前导点是不允许的)一个可选的空间之间的°L (或R__)。

现在,如果您需要一个完全适合掩码999.99°A的模式(即前导零是正确的,任何地方都没有可选的空格,总是有三位数和两位小数),那么您可以使用此模式来代替前面的模式:

代码语言:javascript
运行
复制
^(?:[0-2][0-9]{2}\\.[0-9]{2}|3(?:[0-5][0-9]\\.[0-9]{2}|60\\.00))°[LR]$
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24652069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档