我有以下内容,我已经概述了哪些通过,哪些失败了:
Regex regex = new Regex(@"^\d\b.\d\s\b(Chapter)\b\s\d");
var tru = regex.IsMatch("3.2 Chapter 23");//passed
tru = regex.IsMatch("3.1 Chapter 1");//passed
tru = regex.IsMatch("32.1 Chapter 1");//failed
tru = regex.IsMatch("3.31 Chapter 1");//failed
tru = regex.IsMatch("33.3 Chapter 13");//failed
tru = regex.IsMatch("32.23 Chapter 13");//failed
我的字符串的正确格式应为:
以1到3位数字开头,然后是“。”,然后是1到3位数字,然后是“。”。然后是一个空格“”然后单词“Chapter”然后是一个空格“”然后是另一个1到3位数字
我正在使用.Net 4.5
所以所有6应该通过我的例子应该通过。快到了。我的正则表达式中缺少什么?提前谢谢。
答案 0 :(得分:2)
根据您的描述,您的样品都不应通过:
以1到3位数字开头,然后是"。"然后是1到3位数字,然后是"。"
您的要求总共为.
两个。你的样本都没有。
如果您希望自己的样品通过.
,那么您需要寻找:
^\d{1,3}\.\d{1,3} Chapter \d{1,3}
使用\d
{1,3}
的要求设置为一到三位数
如果您 需要额外的.
,请相应添加另一个\.
(并更改您的样本以匹配)
答案 1 :(得分:1)
您的问题是\d
匹配一位数。将其替换为\d+
以匹配一个或多个数字:
^\d+\b.\d+\s\b(Chapter)\b\s\d+
或者,如果您想将其限制为1到3位,请使用{1,3}
:
^\d{1,3}\b.\d{1,3}\s\b(Chapter)\b\s\d{1,3}
以下是它的工作原理:https://regex101.com/r/dO7tU9/1
答案 2 :(得分:1)
^ \ d {1,3}。\ d {1,3} \ S(章)\ S \ d {1,3} $
这个正则表达式声明:
任何十进制数字{恰好1到3次}。任何十进制数字{正好1到3次}空格(章节)空白任何十进制数字{完全1到3倍}全局
答案 3 :(得分:1)
以下正则表达式符合您的要求:
^ \ d {1,3}。\ d {1,3} \ sChapter \ S \ d {1,3} $