首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为至少包含一个数字且不包含任何字母的字符串编写正则表达式?

问如何为至少包含一个数字且不包含任何字母的字符串编写正则表达式?
EN

Stack Overflow用户
提问于 2017-12-20 17:21:07
回答 3查看 165关注 0票数 0

如何为至少包含一个数字且不包含任何字母的字符串编写正则表达式?数字或字母的位置不感兴趣。字符串中的其他字符也不是很有趣。

代码语言:javascript
复制
QString str;
if (str.contains(QRegExp("[0-9]")) && !str.contains(QRegExp("[a-zA-Z]")))
...

基本上,我需要在一个正则表达式中连接这两个条件。该怎么做呢?

EN

回答 3

Stack Overflow用户

发布于 2017-12-20 17:26:37

我会使用^[^a-zA-Z]*[0-9]+[^a-zA-Z]*$ (允许字符串中任何可选的非字母字符),如果您想要纯数字,可以只使用字符串start/end ^[0-9]+$

票数 1
EN

Stack Overflow用户

发布于 2017-12-20 17:26:03

这是可行的:

代码语言:javascript
复制
QString str {...};
if (QRegExp("[^a-zA-Z]*[0-9][^a-zA-Z]*").exactMatch(str))

"0-9“表示必须匹配的数字。

数字前后可以是除字母("^a-zA-Z*")以外的任意数量的字符。

如果您使用的不是exactMatch,而是indexIn或contains,那么您需要添加'^‘和'$’来匹配字符串的开头和结尾,或者您需要检查regexp是否在开头匹配以及是否匹配完整的字符串(长度)。

票数 0
EN

Stack Overflow用户

发布于 2017-12-20 17:57:19

出于您的目的,您可以使用以下正则表达式:

代码语言:javascript
复制
^[a-zA-Z]{0}([\W\d]+)[a-zA-Z]{0}$

\d匹配数字(等于0-9)

\W匹配非单词字符

a-zA-Z{0}我们避免字符

  • 这意味着我们需要至少一个

^和$:它们表示开始和结束字符串;通过这种方式,我们强制匹配完整字符串的正则表达式(从开始到结束)。

您可以在https://regex101.com/r/cXzI1A/2中使用这个正则表达式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47902538

复制
相关文章

相似问题

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