當前代碼(不工作):正則表達式匹配<腳本類型= 「文本/ JavaScript的」>但不<腳本類型= 「text/html的」>
/^script\s*type=\"text\/javascript/i.test(tagName)
當前代碼(不工作):正則表達式匹配<腳本類型= 「文本/ JavaScript的」>但不<腳本類型= 「text/html的」>
/^script\s*type=\"text\/javascript/i.test(tagName)
爲了說明內的任何地方出現的「類型」腳本標記和多個版本的引號,使用:
/<script.*?type\s*=\s*.text\/javascript./i
您可以通過指定所有報價選項而不是'。'來加強它。
假設你知道所有的當您使用正則表達式來處理HTML時的假設。
您可以刪除當前代碼中的^
,因爲它與字符串的開頭匹配。
編輯
的空間數量至少應爲1,所以你應該改變\s
後*
到+
/<script\stype\=\"text\/javascript\">/i
我不是正則表達式的大風扇,所以我d這樣做:
var temp = document.createElement('div');
temp.innerHTML = '<script type="text/html"></script>';
var type = temp.childNodes[0].getAttribute('type');
if (type == 'text/javascript') {
// ...
}
如果您使用jQuery,它將是路更容易:
if ($('<script type="text/html"></script>').prop('type') == 'text/javascript') {
// ...
}
正則表達式和HTML - 壞東西。正則表達式如何用於下一個示例(請不要忘記單引號和雙引號)?
<script type="text/javascript">
<script language="JavaScript" type="text/javascript">
<script type="text/javascript" language="JavaScript">
<script class="myJS" type="text/javascript">
<script type="text/javascript" class="myJS" >
相反的正則表達式,我建議使用這樣的功能:
function attr_in_str(str, tag, attr) {
var div = document.createElement('div');
div.innerHTML = str;
var elems = div.getElementsByTagName(tag);
for (var i = 0; i < elems.length; i++) {
if (elems[i].type.toLowerCase() == attr.toLowerCase()) {
return true;
}
}
return false;
}
然後使用它:
var str = 'This is my HTML <script type="text/javascript"></script>';
var result = attr_in_str(str, 'script', 'text/javascript');
它必須是一個正則表達式嗎? – alex
你想做什麼? – thegrede
刪除起始錨點。無論如何,請具體說明輸入的內容。在這種特殊情況下,'.indexOf('j')> -1'可以正常工作... – Ryan