0

我在 asp.net 页面中有一个 aspx:memo 控件。该控件有一个正则表达式验证器。如果备忘录中插入的文本与正则表达式不同,则验证器会触发错误。所以我想接受除了这些之外的每个字符:

1) -- (double hyphen)
2) // (double slash)
3) ' (Single quote)
4) \\ (double backslash)
5) ^ (Caret)
6) ; (Semicolon)

到目前为止,我已经创建了这个表达式:

^[\na-zA-Z0-9 .,~?`~!@():#&%=+΄<>\\\-\/_&quot;\]\[\}\{]*$

我已经把我在备忘录中接受的每个字符都放进去了。所以问题是,对于这个表达式,我接受斜杠和反斜杠或连字符,即使它们是单个或多个。如何禁止双斜杠或连字符但允许单斜杠。

我已经为此浪费了很多时间。您的帮助将不胜感激。

先感谢您。

4

2 回答 2

3

^((?!--|\/\/|'|\\\\|\^|;).|\w)*$

分解

(?! )作为负面的前瞻性意味着(由 分隔|)内的任何内容都会导致验证失败

\/\///转义字符在一起

\\\\\\转义字符在一起

.允许任何字符(空格除外)

\w允许空格

于 2019-12-04T13:15:37.093 回答
1

试试这个:

(?<!\-)(?<!\\)(?<!\/)[^;\^'](?!\-)(?!\\)(?!\/)

解释

(?<!\-)(?<!\\)(?<!\/)=> 不匹配\/'之前的黑名单。

[^;\^']=> 我们的黑名单。不要匹配;or 'or ^,匹配其他所有内容。

(?!\-)(?!\\)(?!\/)=> 点不匹配\/'在黑名单之后。

;所以我们允许除了and之外的一切'。但仅当字符前面或后面没有or\时。这意味着这些字符的单次出现是允许的。/'

编辑:

这仅匹配单个字符。更好地使用公认的答案。

于 2019-12-04T13:11:43.527 回答