我的应用程序中有一个正则表达式,它可以正常工作,但它也匹配空字符串,也就是当输入为空时不会出现任何错误。我该如何修改这个正则表达式,使其不匹配空字符串?请注意,我不想改变这个正则表达式的任何其他功能。
这是我正在使用的正则表达式:^([0-9\(\)\/\+ \-]*)$
我自己对正则表达式的制定了解不多,这就是为什么我在问。我已经搜索了答案,但找不到直接的答案。我找到的最接近的答案是这个:c#中用于匹配非空字符串的正则表达式,但那对我并没有真正的帮助..
我的应用程序中有一个正则表达式,它可以正常工作,但它也匹配空字符串,也就是当输入为空时不会出现任何错误。我该如何修改这个正则表达式,使其不匹配空字符串?请注意,我不想改变这个正则表达式的任何其他功能。
这是我正在使用的正则表达式:^([0-9\(\)\/\+ \-]*)$
我自己对正则表达式的制定了解不多,这就是为什么我在问。我已经搜索了答案,但找不到直接的答案。我找到的最接近的答案是这个:c#中用于匹配非空字符串的正则表达式,但那对我并没有真正的帮助..
*
替换为+
,因为*
表示"0个或多个出现次数",而+
表示"至少一个出现次数"。
[^"\\]*(?:\\.[^"\\]*)*
⇒(?:[^"\\]|\\.)+
abc||def
⇒abc|def
(去掉额外的|
选择符)
^(a)?(b)?(c)?$
⇒^(?!$)(a)?(b)?(c?)$
((?!$)
负向前瞻在字符串开头失败,如果字符串结尾在字符串开头)
或 ⇒^(?=.)(a)?(b)?(c?)$
((?=.)
正向前瞻要求至少一个字符,.
可能匹配或不匹配换行符,具体取决于修饰符/正则表达式类型)
^$|^abc$
⇒^abc$
(去掉^$
选择符,使正则表达式能够匹配空字符串)
^(?:abc|def)?$
⇒^(?:abc|def)$
(去掉?
量词,使(?:abc|def)
组为必选项)
为了让\b(?:north|south)?(?:east|west)?\b
(匹配 north
, south
, east
, west
, northeast
, northwest
, southeast
, southwest
),单词边界必须精确:在初始单词边界后添加(?<!\w)
,使其仅匹配单词的开头,并在尾随单词边界后添加(?!\w)
,使其仅匹配单词的结尾。
\b(?:north|south)?(?:east|west)?\b
⇒\b(?<!\w)(?:north|south)?(?:east|west)?\b(?!\w)
+
或{min, max}
语法:^[0-9\(\)\/\+ \-]{1,}$
or
^[0-9\(\)\/\+ \-]+$
顺便说一下:这是一个很好的学习正则表达式的资源(而且很有趣):http://regexone.com/
*
替换为 +
,因为 +
匹配一个或多个字符。但是在字符类内部,您不需要进行所有转义。您的正则表达式可以简化为:^([0-9()\/+ -]+)$