我正在尝试编写正则表达式来检查文本段落中的特殊字符(包括'script'和'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;
}
它不会检测到'<s',因为它不是设计的。
所要做的就是匹配“javascript”的一个实例、“script”的一个实例或这些特殊字符之一。
如果你想让它检测 '<s; 你需要使用 * 或 +... 之类的
((script)|(javascript)|([/'()&<>^~`|\"]))+
虽然这不会匹配 '<s',但它会匹配 '<script'