正则表达式不匹配某字符串?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式不匹配某字符串?相关的知识,希望对你有一定的参考价值。

<img id="a1" src="Images\未命名.jpg"/>
<img src="Images\未命名.jpg" id="a1"/>
<img id=“img1” src="Images\未命名.jpg"/>
<img src="Images\未命名.jpg"/>
<img src="Images\未命名.jpg" id="a1" name="a001"/>
这要<img/>这个标签有id=“a1”都不匹配,不要写死,可能img里面有很多属性但id=“a1”属性可以出现在任意位置。求一正则解答:以上5个img只匹配:
<img id=“img1” src="Images\未命名.jpg"/> 和 <img src="Images\未命名.jpg"/>
其他都不匹配!

直接找不含exp字符的单词正则是实现不了的.

不过可以取巧,找到含exp字符单词,然后把这些单词替换成空字符串,然后再在替换好的字符串里面找单词

找含exp的单词的正则

(?=[A-Za-z]*exp[A-Za-z]*)[A-Za-z]*

匹配替换后的字符串的字符的正则

[A-Za-z]*

如图


参考技术A

js 的话如下可以测试:

<html>
<head>
<!--
    将此内容保存为 html 文件,浏览器允许运行脚本进行测试。
-->

<script type="text/javascript">

function check()

    var str, str2, str3;
    var re;

    re   = /(<img(?!.*id="a1").*\\/>)/g;
    str  = document.getElementById("txtInput").value;
    str3 = "";

    while ((str2 = re.exec(str)) != null)
    
        str3 = str3 + "\\n" + str2[0];
    

    if (str3.length > 0)
    
        alert("提取到:" + str3);
    
    else
    
        alert("没有提取到内容。");
    


</script>
</head>

<body>
输入:<br>
<textarea id="txtInput" cols ="50" rows = "10">
<img id="a1" src="Images\\未命名.jpg"/>
<img  src="Images\\未命名.jpg" id="a1"/>
<img  id=“img1” src="Images\\未命名.jpg"/>
<img  src="Images\\未命名.jpg"/>
<img  src="Images\\未命名.jpg"  id="a1" name="a001"/>
</textarea>
<br>

<button type="button" onclick="check()">正则检查</button>

</form>

</body>
</html>

本回答被提问者采纳
参考技术B 说的太混乱了,你的具体要求明确一下追问

意思就是只要 里面有属性是id=“a1”的都不匹配
那么上面的5个img只有:


这2个符合我的要求。因为一个id不等于a1,一个没有id属性

追答

(?i)]*?id=(['""]?)[^'""]*?a1[^'""]*?\1)[^>]*?>

正则表达式,不包含某特殊符号

参考文章如下 :

JavaScript正则表达式匹配:不包含某字符或字符串

正则表达式不包含特定字符串和特定字符的写法

下文是正则规则讲解:

正则表达式中的特殊字符

正则表达式样例收集:

ext regex 收集

以上是关于正则表达式不匹配某字符串?的主要内容,如果未能解决你的问题,请参考以下文章

正则如何匹配某字符之后的内容

正则表达式,不包含某特殊符号

正则表达式,不包含某特殊符号

java 正则匹配 ,某 首尾中间 多个内容

正则表达式 如何完成匹配某个字符串 但是不包含指定字符串

正则表达式匹配规则