2010-12-08 97 views
0

我在这里有一个问题,我比较新的RegularExpressionValidator。它接受所有字母数字,撇号,连字符,下划线,空格,&符号,逗号,括号,句号。RegularExpressionValidator TextBox

我给出的答案是:

"^([a-zA-Z0-9 '-_&,()\.])+$" 

这似乎善于第一,但它似乎接受amoung其他事情“*”。

有人可以告诉我我在这里有什么错吗?

+1

这真的是你用过的吗?你错过了一个关闭的位置)(在开始时有一个开放的,不关闭) – 2010-12-08 20:54:15

+0

输入它错了。我现在编辑它,这就是我的。谢谢! – BigJim 2010-12-08 20:56:54

+0

当你举出一个例子,每个角色都有特殊的含义时,你不应该把这个例子包装在“”中。我们不清楚你是否在你的真实验证器中使用它。我假设没有。 – rtpHarry 2010-12-08 21:25:19

回答

2

问题似乎是破折号 - 在角色类中,如果未转义,而不是在字符类的最后或最开始处,则表示范围(A-Z将是您自己的正则表达式的一个很好的例子)。

因此'-_也被解释为一个范围,并且ASCII 39(')和ASCII 95(_)之间的字符是()*+,-./0-9:;<=>[email protected][\]^

把短跑末,你应该罚款:

^[a-zA-Z0-9 '_&,().-]+$ 
0

因为我也绊倒了这个事实,即在我最初的答案中使用了一个角色类,所以我挖掘了更多信息。发现下面的教程摘录在http://www.regular-expressions.info/charclass.html

唯一特殊字符或 元字符一个字符 类是右括号内(]),所述 反斜杠()时,插入符号(^)和 连字符( - )。通常的元字符 是 字符类中的正常字符,并且不需要由反斜杠转义的 。

\-转义-应该可以解决您的问题。

1

你的性格类是不太正确的。这部分:'-_创建从撇号字符到下划线字符的范围。在ASCII表中,*字符介于两者之间。你需要或者逃避连字符:

^([a-zA-Z0-9 '\-_&,()\.])+$ 

或移动到某个地方“小儿科”,如字符类的末尾:

^([a-zA-Z0-9 '_&,()\.-])+$ 
1

除了“-_问题涉及由其他人你也有错误的地方结束+。

在这个表达式的值捕获组:

^([a-zA-Z0-9 '-_&,()\.])+$ 
在快报

是字符串中的最后一个字符。

如果你想捕捉的正则表达式中,整个事情,然后把后+直]像

^([a-zA-Z0-9 '-_&,()\.]+)$ 

如果你没有打扰有关提取内捕获的(价值),然后删除()

^[a-zA-Z0-9 '-_&,()\.]+$ 
相关问题