簡體   English   中英

用於檢查字符串是否包含有效腳本標記的正則表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM