正则表达式模式不起作用

时间:2014-01-24 10:20:08

标签: javascript jquery regex pattern-matching

我想允许输入字段中的每个字符除^<>%*()#!?为此我正在使用这种约束。 用于客户端验证

final String regexpattern = "/[^<>%*()#!?]/";

用于服务器端

 final Pattern pat = Pattern.compile("/[^<>%*()#!?]/");

但它不起作用

4 个答案:

答案 0 :(得分:0)

在客户端,模式应该是

regexpattern = /^[^<>%*()#!?]*$/

服务器

final Pattern pat = Pattern.compile("^[^<>%*()#!?]*$");

答案 1 :(得分:0)

仅适用于一个角色,之后需要添加“+”或“*”。

答案 2 :(得分:0)

模式中应该有^$来指定字符串的开头和结尾,否则它只会验证字符串中至少有一个有效字符,而不是全部字符串中的字符有效。

您还需要字符集的乘数,否则它只匹配一个字符长的字符串。要允许零个或多个字符,请使用*,并允许使用+一个或多个字符。您也可以使用范围,例如{2,10}允许2到10个字符。

集合开头的^是将其设为负数,因此要禁止^,您还需要集合中的字符。

斜杠是正则表达式文字的分隔符。您可以将模式编写为字符串,您可以使用它创建正则表达式对象:

pattern = "^[^^<>%*()#!?]+$";

或者将其写为正则表达式文字,它将成为正则表达式对象:

regex = /^[^^<>%*()#!?]+$/;

答案 3 :(得分:-2)

其中一些角色需要在正则表达式中进行转义。

试试这个:

final String regexpattern = /[\^<>%*()#!?]+/ ;


final Pattern pat = Pattern.compile("[\^<>%*()#!?]+") ;