正则表达式模式不匹配输入字符串。

4
我需要找到一个模式来限制输入的数据。 我需要它限制输入为:
第一个字符必须是"S" 第二个字符必须是"S"、"T"、"W"、"X"或"V" 接下来的6个字符必须是0-9的数字 最后2个字符可以是任何大写字母或任何数字0-9
因此,我的研究使我得以将其组合在一起..... ^[S][STWXV]/d{6}[A-Z0-9]{2}$ 从我所读的: [S] 表示仅使用大写字母S [STWXV] 表示从该列表中任选一个字母 /d{6} 意味着6个数字 [A-Z0-9]{2} 意味着任意2个字符A - Z或0 - 9
我不是在字符串中寻找匹配项,而是需要整个字符串与此模式匹配。
那么为什么Regex.IsMatch("SX25536101", "^[S][STWXV]/d{6}[A-Z0-9]{2}$")返回false?
我显然出了问题,但这是我第一次尝试正则表达式,这一点也不讲道理 :(

2
尝试找到一个更好地描述你问题的标题。请考虑这个标题将被用于搜索引擎。 - Tim Schmelter
1
非常接近:尝试使用\d而不是/d - Scott Wegner
1
反斜杠转义有趣的字符,如\d。在许多语言中,正斜杠写在Regex的两侧,表示该表达式是一个Regex。 - La-comadreja
@TimSchmelter 是的,你说得对,抱歉我会更改的,不确定是否会帮助其他人。我是新手,但希望随着时间的推移能提高我的贡献质量。谢谢大家。 - FlipTop
2个回答

8

您需要使用\d来表示数字:

 Regex.IsMatch("SX25536101", @"^[S][STWXV]\d{6}[A-Z0-9]{2}$"); // true

注意:这里有一个好用的正则表达式备忘单,可以帮助你以后更好地理解。


2
多么烦人啊,离目标如此之近却没有发现如此愚蠢的错误!!谢谢。 - FlipTop

-1

或者干脆不使用\d(更好,更快):

^S[STWXV][0-9]{6}[A-Z0-9]{2}$

请参见此处此处了解原因。


为什么这是首选?-1 - OGHaza
1
\d 是数字的简写,它可以使正则表达式更加简洁。请使用它。 - La-comadreja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接