如何为至少包含一个数字且不包含任何字母的字符串编写正则表达式?数字或字母的位置不感兴趣。字符串中的其他字符也不是很有趣。
QString str;
if (str.contains(QRegExp("[0-9]")) && !str.contains(QRegExp("[a-zA-Z]")))
...基本上,我需要在一个正则表达式中连接这两个条件。该怎么做呢?
发布于 2017-12-20 17:26:37
我会使用^[^a-zA-Z]*[0-9]+[^a-zA-Z]*$ (允许字符串中任何可选的非字母字符),如果您想要纯数字,可以只使用字符串start/end ^[0-9]+$
发布于 2017-12-20 17:26:03
这是可行的:
QString str {...};
if (QRegExp("[^a-zA-Z]*[0-9][^a-zA-Z]*").exactMatch(str))"0-9“表示必须匹配的数字。
数字前后可以是除字母("^a-zA-Z*")以外的任意数量的字符。
如果您使用的不是exactMatch,而是indexIn或contains,那么您需要添加'^‘和'$’来匹配字符串的开头和结尾,或者您需要检查regexp是否在开头匹配以及是否匹配完整的字符串(长度)。
发布于 2017-12-20 17:57:19
出于您的目的,您可以使用以下正则表达式:
^[a-zA-Z]{0}([\W\d]+)[a-zA-Z]{0}$\d匹配数字(等于0-9)
\W匹配非单词字符
a-zA-Z{0}我们避免字符
^和$:它们表示开始和结束字符串;通过这种方式,我们强制匹配完整字符串的正则表达式(从开始到结束)。
您可以在https://regex101.com/r/cXzI1A/2中使用这个正则表达式
https://stackoverflow.com/questions/47902538
复制相似问题