任何人都可以告诉我textfield的正则表达式,它不允许跟随字符,并且可以接受其他特殊字符,字母,数字等:
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ @ &
答案 0 :(得分:1)
这将不允许包含上述字符串任何部分中任何字符的字符串。
^(?!.*[+\-&|!(){}[\]^"~*?:@&]+).*$
简要说明
^
(?!.*[+\-&|!(){}[\]^"~*?:@&]+)
.*
*
[+\-&|!(){}[\]^"~*?:@&]+
+
+
\-
&|!(){}[” «&|!(){}[
\]
^"~*?:@&” «^"~*?:@&
.*
*
$
答案 1 :(得分:0)
通常情况下,将您允许的字符列入白名单通常会更好,而不是将您不允许的字符列入黑名单。从安全角度和易于实施的角度来看都是如此。
如果您确实进入黑名单路线,这是一个示例,但要注意,语法并不简单。
http://groups.google.com/group/regex/browse_thread/thread/0795c1b958561a07
如果要将所有重音字符列入白名单,可能使用unicode范围会有帮助吗?看看这个链接。
答案 2 :(得分:0)
我认为这些是需要为Solr转义的角色。如果是这种情况,并且如果您使用PHP进行编码,那么您应该使用来自Github的PHP utility functions。这是其中一个Solr函数:
/**
* Escape values destined for Solr
*
* @author Dotan Cohen
* @version 2013-05-30
*
* @param value to be escaped. Valid data types: string, array, int, float, bool
* @return Escaped string, NULL on invalid input
*/
function solr_escape($str)
{
if ( is_array($str) ) {
foreach ( $str as &$s ) {
$s = solr_escape($s);
}
return $str;
}
if ( is_int($str) || is_float($str) || is_bool($str) ) {
return $str;
}
if ( !is_string($str) ) {
return NULL;
}
$str = addcslashes($str, "+-!(){}[]^\"~*?:\\");
$str = str_replace("&&", "\\&&", $str);
$str = str_replace("||", "\\||", $str);
return $str;
}