如何为字符串编写正则表达式,其中包含一个数字至少一个数字,并且不包含任何字母
How to write regular expression for string which contains minimum one number and does not contain any letter?
如何为字符串编写正则表达式,其中包含一个数字,不包含任何字母?数字或字母的位置并不有趣。字符串中的另一个字符也不有趣。
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
,而是indexIn
或contains
,则需要添加'^''和$'以匹配字符串的开始和结束,否则您需要检查Regexp是否在开始时匹配并匹配完成字符串(长度)。
相关文章:
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何获取一个数字的前3位
- 我想做一个彼此不同但重复出现的数字
- 如何检查一个c++字符串中有多少相同的字符/数字
- 为什么有时我输入一个整数,程序将第一个输入的数字打印成十进制数?
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- CIN 仅在输入非数字值时跳过下一个 CIN
- 以C++输出一个数字三角形
- 形成一个斐波那契三角形,使得每个数字是上面左对角线或右对角线上两个数字的总和
- 为什么当我输入一个被接受的数字时,我的 do-while 循环没有中断?
- 一个C++程序,用于在输入位数时输出具有特定位数的 .txt 文件中的所有数字
- 在C++中编程,将 3 个数字发送到一个函数,然后计算这 3 个数字的平均函数
- 在使用堆栈为下一个最大数字编写代码时面临 SIGSEGV(分段错误)
- 找到 x^n 的所有组合,并检查它们的总和是否等于一个不包括相同数字的数字
- 是否有一个 std::set 函数来确定不超过数字 x 的最大元素?
- 将数字提高到一个巨大的指数
- 反转一个数字程序不起作用,为什么?
- 使用带有一个参数函数的递归找到数字的平方
- 为什么当我输入一个大数字时,输出会一遍又一遍地重复?
- 为什么断点显示数组的第二个值是一个大数字?额外学分工作