簡體   English   中英

創建一個Javascript RegExp以在HTML / php模板中查找開始標記

[英]Create a Javascript RegExp to find opening tags in HTML/php template

我正在嘗試編寫一個Javascript HTML / php解析器,它將從HTML / php源中提取所有開始標記,並返回標記和屬性的類型及其值,同時監視是否應評估值/屬性靜態文本或php變量。 問題是當我嘗試編寫Javascript RegExp模式時,更具體地說是某些罕見情況。 RegExp我能夠提出任何涉及負面的lookbehind(以處理關閉的php標記 - 即匹配一個沒有問號的結束括號)或在某些情況下失敗。 lookbehind版本看起來像:

<[a-zA-Z]+.*?(?<!\?)>

...除了我必須避免使用lookbehind的情況外,它的工作原理很完美。 更友好的Javascript版本是:

<[a-zA-Z]+((.(?!</)(?!<[a-zA-Z]+))*)?>

......在這種情況下除外:

<option value="<?php echo $img; ?>"<?php echo ($hpb[$i]['image_filename']==$img?' selected="selected"':''); ?>><?php echo $img; ?></option>

我是否完全搞砸了這個問題,或者在我的情況下真的有必要嗎? 任何幫助是極大的贊賞。

只需確保'>'之前的最后一個字母不是?,使用[^?]。 不需要前瞻或后顧之憂。

<[a-zA-Z](.*?[^?])?>

括號和最后? 也是為了匹配像<b>這樣的標簽。

編輯該解決方案不適用於沒有屬性的單個字符標簽。 所以這是一個做的:

<[a-zA-Z]+(>|.*?[^?]>)

更簡單的答案是<[^ / ^>] +>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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