【发布时间】:2012-10-11 19:19:28
【问题描述】:
我几乎没有编写正则表达式的经验。我将如何检查字符串是否只包含零、空格、连字符和冒号?谢谢!
【问题讨论】:
我几乎没有编写正则表达式的经验。我将如何检查字符串是否只包含零、空格、连字符和冒号?谢谢!
【问题讨论】:
您应该使用简单的正则表达式(无前向查找)获得良好的性能:
^[0 :-]++$
分解:
^ 识别输入的开头[] 表示括号内的任何字符匹配。+ 表示前面的(括号)必须匹配 1 次或多次。 ++ 变为 possesive,提高了性能。$ 识别输入的结尾【讨论】:
- 只是另一个字符。
++ 的行为与+ 在 lex/flex 中的行为完全相同。每天学习新东西
/^[0\s:-]+$/
^ = 字符串开头[0\s:-]+ = 一个或多个零、空格、连字符、冒号。 + 表示一个或多个,\s 是任何空白字符,可能包括换行符和制表符。$ = 字符串结束由于该模式锚定在^ 和$ 之间,因此除了[] 字符类中的字符之外,不会匹配任何字符。
如果您只允许文字空格而不是任何空白字符,请使用:
/^[0 :-]+$/
【讨论】:
您可以使用范围。
^[0 \-:]{1,}$
【讨论】:
{1,} 与 + 相同。此外,如果将 - 放在列表的开头或结尾,则无需转义它。