我试着写正则表达式来检查文本段落特殊字符(包括“脚本”和“JavaScript的”关键字)使用:正则表达式的特殊字符
"(script)|(javascript)|([/'()&<>^~`|\"])"
但是,这并不工作,如果我用它混合字母。比方说,如果我输入<
,它会检测到,但如果我输入<s
ir不会检测到。
我试着写正则表达式来检查文本段落特殊字符(包括“脚本”和“JavaScript的”关键字)使用:正则表达式的特殊字符
"(script)|(javascript)|([/'()&<>^~`|\"])"
但是,这并不工作,如果我用它混合字母。比方说,如果我输入<
,它会检测到,但如果我输入<s
ir不会检测到。
试试这个:
".*(script|javascript|[/'()&<>^~`|\"]).*"
我在正则表达式之前和之后添加了.*
。
这意味着:
这应该让你的正则表达式匹配这样的模式:
aaaa<
aaaa<a
<aaaaa
<
xscript
scriptx
xxscriptxx
这里是另一种方式来做到这一点:
static final Pattern INVALID_CHARS = Pattern.compile("[/'()&<>^~`|\"]");
boolean isInvalid(String s) {
if (s.indexOf("javascript") != -1) {
return true;
}
if (s.indexOf("script") != -1) {
return true;
}
if (INVALID_CHARS.matcher(s).find()) {
return true;
}
return false;
}
伟大的信息jahroy!非常感谢! – McQueen
它不会检测'< s',因为它不适用于。
所有要做的事情都是匹配“javascript”的一个实例,“script”的一个实例或者其中一个特殊字符。
如果您希望它检测'< s;您需要使用*或+ ...像
((script)|(javascript)|([/'()&<>^~`|\"]))+
虽然这不会匹配 '< S',它将匹配 '<脚本'
截至目前它只适用于单个字符。如果输入任何文字,让我们说“这是第一个文本”。这个(|)没有被检测到。 同样的方式,如果我输入“脚本”,它会被检测到,但如果我输入“这是一个脚本”它没有得到检测 – McQueen
无关与Spring,去除春天标签。 – Adrian
你是正则表达式查找由恰好一个特殊字符组成的字符串(或匹配前两个模式)。 – jahroy