[英]Regex expression for checking if a string contains a valid script tag
我正在嘗試創建一個正則表達式來測試給定字符串是否具有有效的腳本標記。 例如,如果一個頁面包含在其中
<body>Body goes here</body>
<script src = "page.js"></script>
使用正則表達式測試方法測試此字符串(在這種情況下為頁面的 HTML 源)應返回 true,因為存在有效的腳本標記。 類似地,帶有有效腳本標簽的 URL 如下:
https://url.com/something.php?getp=<script>func();</script>
也應該返回 true。 但是,類似:
https://url.com/something.php?getp=<script</script>
應該返回 false,因為它不是有效的腳本標簽。
任何有關如何 go 的建議將不勝感激。 謝謝!
使用DOMParser
將字符串轉換為文檔,然后使用querySelector
檢查文檔是否有任何script
標簽:
const hasScript = str => Boolean( new DOMParser().parseFromString(str, 'text/html').querySelector('script') ); console.log(hasScript('https://url.com/something.php?getp=<script<\/script>')); console.log(hasScript('https://url.com/something.php?getp=<script><\/script>')); console.log(hasScript(`<body>Body goes here</body> <script src = "page.js"><\/script>`)); console.log(hasScript('https://url.com/something.php?getp=<script>func();<\/script>'));
DOMParser是安全的——腳本標簽的內容在解析過程中不會被執行。
您可以使用 JavaScript 字符串匹配...
let str = 'abcdefi<script>jfdjjdjd';
let valueToLookFor = /script/g
let isItThere = str.match(valueToLookFor);
isItThere ? console.log('Yes'):console.log('No') //yes
let str = 'abcdefijfdjjdjd';
let valueToLookFor = /script/g
let isItThere = str.match(valueToLookFor);
isItThere ? console.log('Yes'):console.log('No') //no
這應該這樣做。
/(<script\s*>\w.+<\/script\s*>)|(<script\s*src\s*=\s*"[A-Za-z0-9]+\.js"\s*><\/script\s*>)/g
在正則表達式中試試這個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.