如何为字符串编写正则表达式,其中包含一个数字至少一个数字,并且不包含任何字母

How to write regular expression for string which contains minimum one number and does not contain any letter?

本文关键字:数字 一个 何字母 包含任 正则表达式 包含一 字符串      更新时间:2023-10-16

如何为字符串编写正则表达式,其中包含一个数字,不包含任何字母?数字或字母的位置并不有趣。字符串中的另一个字符也不有趣。

QString str;
if (str.contains(QRegExp("[0-9]")) && !str.contains(QRegExp("[a-zA-Z]")))
...

基本上,我需要在一个常规上加入两个条件。如何做?

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

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

^[a-zA-Z]{0}([Wd]+)[a-zA-Z]{0}$

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

w匹配不符号字符

[a-za-z] {0}我们避免字符

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

^ and $:它们是指启动和结束字符串;这样,我们强制匹配完整字符串的正则表达式(从其开始到结尾)

您可以在这里使用此正则表达式https://regex101.com/r/cxzi1a/2

这有效:

QString str {...};
if (QRegExp("[^a-zA-Z]*[0-9][^a-zA-Z]*").exactMatch(str))

" [0-9]"用于必须匹配的数字。

数字之前和之后可以是字母以外的任何数量的字符(" [^a-za-z]*")。

如果您不使用exactMatch,而是indexIncontains,则需要添加'^''和$'以匹配字符串的开始和结束,否则您需要检查Regexp是否在开始时匹配并匹配完成字符串(长度)。

相关文章: