有人能告诉我如何为“无引号(单引号或双引号)允许写正则表达式,只允许使用单个连字符”?例如,"good"
,'good'
,good--looking
不被允许(但good-looking
是)。
我需要把这个正则表达式如下:
<asp:RegularExpressionValidator ID="revProductName" runat="server"
ErrorMessage="Can not have " or '." Font-Size="Smaller"
ControlToValidate="txtProductName"
ValidationExpression="^[^'|\"]*$"></asp:RegularExpressionValidator>
我所拥有的是双引号和单引号。现在我需要在那里添加多个连字符。我这样说"^[^'|\"|--]*$"
,但它不起作用。
答案 0 :(得分:2)
^(?:-(?!-)|[^'"-]++)*$
应该这样做。
^ # Start of string
(?: # Either match...
-(?!-) # a hyphen, unless followed by another hyphen
| # or
[^'"-]++ # one or more characters except quotes/hyphen (possessive match)
)* # any number of times
$ # End of string
答案 1 :(得分:1)
因此,当'
,"
或--
时,正则表达式必须失败。
因此,regexp应该在每个位置尝试这个,如果找到了,那么失败:
^(?:(?!['"]|--).)*$
我们的想法是使用.
消费所有行,但每次使用.
时都要检查'
,或"
,或者--
。
另外,我非常喜欢其他答案。它采用了一种不同的方法。它仅使用非'"
符号([^'"]
),如果它消耗-
,则会检查是否有其他-
。
此外,还有一种方法可以在字符串中搜索'
,"
或--
,然后在找到正则表达式时失败。我可以通过使用正则表达式条件表达式来实现。但这种正则表达式引擎似乎不支持这种条件。