当前代码(无法运行):
/^script\s*type=\"text\/javascript/i.test(tagName)
当前代码(无法运行):
/^script\s*type=\"text\/javascript/i.test(tagName)
正则表达式和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');
/<script\stype\=\"text\/javascript\">/i
我并不是正则表达式的忠实粉丝,所以我会这样做:
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时已经了解了所有的假设。
您可以直接删除当前代码中的^
,因为它匹配字符串的开头。
编辑
空格数量应至少为1,因此您应该将\s
后面的*
改为+
。
/<script.*?type\s*=\s*.text\/javascript./i
你可以通过指定所有的引号替代方案而不是“.”来使其更紧凑。
.indexOf('j') > -1
就可以正常工作... - Ry-