這裏的RegEx測試是什麼?這個Javascript語句(正則表達式)是什麼意思?
function chksql(){
if (/^\s*(?:delete|drop|truncate|alter)/.test(v)) return false;
}
我只知道它與正則表達式混合在一起,但無法弄清楚它的含義。
這裏的RegEx測試是什麼?這個Javascript語句(正則表達式)是什麼意思?
function chksql(){
if (/^\s*(?:delete|drop|truncate|alter)/.test(v)) return false;
}
我只知道它與正則表達式混合在一起,但無法弄清楚它的含義。
這意味着它檢查是否v
是與零個或多個空格charcters其次刪除或下降或截斷開頭的字符串或改變
所以如果v
是" alter"
這會返回false。
看到文檔:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
我要補充的是檢查,對這種情況發生在客戶端是一個非常糟糕的主意。它將被規避。
這些天有很多用於測試和探索正則表達式的在線工具。
我喜歡的是debuggex.com。下面是它會顯示你的正則表達式:
^\s*(?:delete|drop|truncate|alter)
要解釋的是,你仍然需要做的有點像發現什麼^
和\s
平均功課,但「鐵路圖」有助於顯示正則表達式正在測試的內容。只需按照行,看看它會匹配。您也可以嘗試在上面的鏈接中輸入測試字符串,以查看它們是如何匹配(或不匹配)的。
另一個好地方是regex101.com。這裏是your regular expression there。他們給你一個關於正則表達式正在尋找的英文描述。
另外,希望mkoryak的建議,試圖消毒客戶端上的SQL!正則表達式
更多信息[這裏](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) – aug
請鏈接做這個網站,因爲在客戶端檢查這個垃圾是一個等待發生的「drop table」 – mkoryak
好吧,至少這個代碼會讓它更難一點。您可能不得不說「DROP TABLE」! just_a_newbie,我在這裏指的是這個正則表達式只匹配*小寫*字,但是SQL關鍵字是大小寫獨立的,事實上傳統上是用大寫字母寫的。 –