标签的正则表达式有效,但不具有特定的ID?

时间:2017-06-24 01:10:23

标签: php regex

以下正则表达式:

id="special"

目标输入字符串中的每个[TEXT]和[INPUT],除了脚本标记中的任何[]。

我现在想要更改此内容,将异常放在具有<script id="special">[INPUT]</script>的特定脚本上。

所以<script>[INPUT]</script>不应该被定位,而另一个没有id特殊的脚本标签,如id="special"应该与字符串的其余部分一起使用。

我尝试在[^>]*>之前将Aggregate添加到上述正则表达式中,但不起作用。

2 个答案:

答案 0 :(得分:0)

你可能会对此感到复杂。

如果您不想匹配具有任何属性的<script>元素,则可以使用\ s作为空格:

<\s*script\s*>\[(.*?)\]</\s*script\s*>

如果您需要省略的唯一属性是&#39; id&#39;你可以用一个 负向前瞻/后视:

<script(?!.*\sid=).*>\[(.*?)\]</script>

这将匹配<script字符前<whitespace>id=之前没有>匹配的Car.prototype.main = function() { var angle = angleBetweenTwoPoints(this.target.position, this.position); var cos = Math.cos(degreeToRadian(angle)) * -1; var sin = Math.sin(degreeToRadian(angle)); var _this = _super.call(this) || this; this.angle = angle; this.position.x += cos * this.speed; this.position.y -= sin * this.speed; if (distance(this.position, this.target.position) < 10 && this.image == GameImage.getImage("hero") ) { this.target.position.x = Math.random() * mainCanvas.width; this.target.position.y = Math.random() * mainCanvas.height; this.hitCount++; console.log(hitCount); ctx.fillText("points : " + hitCount, 32, 32); this.changeImage = true; _this.speed = 3; this.changeImageTime = Date.now() + 600; //0.5 sec from now. this.image = (this.image == GameImage.getImage("hero"))? GameImage.getImage("hero_other") : GameImage.getImage("hero"); } if(this.changeImage){ if(Date.now() > this.changeImageTime){ this.changeImage = false; _this.speed = 9; this.image = (this.image == GameImage.getImage("hero_other"))? GameImage.getImage("hero") : GameImage.getImage("hero_other"); } } }; return Car; }(Actor)); 。 更多帮助请访问此Link

答案 1 :(得分:0)

您可以使用PCRE动词scriptskip跳过具有该ID的fail元素内的所有内容。

<script id="special">.*?<\/script>(*SKIP)(*FAIL)|\[[^\]]+?\]

演示:https://regex101.com/r/PSMV15/5/

您可以在此处详细了解http://www.rexegg.com/backtracking-control-verbs.html#skipfail

如果字符串是HTML,则应使用解析器,因为元素和属性中可能存在各种变体。

例如:

<script  id="special">
<script src="page" id="special">
<script src="page" id="special" class="why?">
<script id='special'>
<script id=special>
<script id=special src=page>

甚至没有输入分层元素问题。这里有一个关于为什么正则表达式和HTML不应该在一起的线程。 RegEx match open tags except XHTML self-contained tags