我試着寫正則表達式來檢查文本段落特殊字符(包括「腳本」和「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