2017-05-30 165 views
0

我试图形成一个正则表达式,这将允许字母数字与一些特殊的字符一起(@ -_)。我试图将这些特殊字符列入白名单,但其他特殊字符也是允许的。所以我试图将除上述之外的所有其他特殊字符列入黑名单。使用这个:正则表达式不允许双引号不工作

/^([^\s!#$%&'()*+\/:;<=>?\[\\\]^`{|}~,][[email protected]_0-9-]*[^\s!#$%&'()*+\/:;<=>?\[\\\]^`{|}~,])$/ 

如何添加双引号,以便它不被允许在字符串的任何地方。 试过\”但不工作

+1

请提供编程语言/正则表达式风味和有效/无效的字符串。另外,说实话,你的表情看起来过于复杂。 – Jan

+0

编程语言:AngularJS(以ng模式使用)。 有效的字符串:cathorse 无效的字符串:“cathorse 无效的字符串:cathorse” –

+0

请编辑字符串为您的问题。 – Jan

回答

0

如果我看到你的正则表达式正确,并了解你的愿望:。

^(       # Start of string and capture group 
[^\s!-,\/:-?\[\\\]^`{|}~,]  # Any character, BUT "blacklisted" 
[\[email protected]]*      # Any number of word characters, @, . or -. 
[^\s!-,\/:-?\[\\\]^`{|}~,]  # Any character, BUT "blacklisted" 
)$ 

它通过使用范围简化。例如,在字符类,!-,相同!"#$%&'()*+,,这也个黑名单不必要"

+0

是的,你的理解正确,但问题是,即使我将它列入黑名单组中,也可以在开始和结尾引用引号: –

+0

请解释。 regex101(https://regex101.com/r/opbwnv/3)(使用PCRE能够有意见正则表达式仍然是相同的;) – ClasG

+0

感谢ClasG :),但不允许单个字符现在。 。例如:单个字符'd' –

1

使用这一个

Dim clean as string = Regex.replace(tbname,"[^A-Za-z0-9\-/]","") 

这一次它会阻止所有的特殊字符

+0

我需要允许四个特殊字符(@, - ,_,。) 1.在速率 2.连字符 3。下划线 4.完全停止 –

0

您可以使用白名单的方式,但需要把-最后:[@_.-];或逃避它:[@\-_.]

否则,@-_意思是 “@ ASCII和_ ASCII之间的任何东西。”

Regex101.com是黄金这样的事情,它解释了正则表达式的每一个部分。

相关问题