[英]JavaScript Regular Expression .replace usage
我正在嘗試使用正則表達式僅顯示HTML代碼中的“所需字符串”,有人可以看到我要去哪里了嗎?
alert("< TD>< B>< B>13COB251< /B> - Desired String< /B>< /TD>".replace(/(<[A-Z]*>)+13COB251(<\/[A-Z]*>)+ - ([a-z]*)(<\/[A-Z]*>)+/gi, "$3"))
謝謝!
如果您通過Regexper輸入當前代碼,則會出現以下錯誤:
預期* / +,?,{,{,(,[,。,\\,$,| ,,)在/(<[AZ]>)+ 13COB251(<
您需要通過在反斜杠前加上一個反斜杠( \\
)來轉義 /
字符:
/(<[A-Z]>)+13COB251(<\/[A-Z]>)+ - ([a-z])(<\/[A-Z]>)+/gi
但是,正如您所看到的,這並不是很准確。 關於StackOverflow的最佳答案之一將解釋為什么不應該使用正則表達式解析HTML。
您需要轉義模式中的/
字符,因為這是分隔符。
然后,您需要更多的量詞。 模式(<[AZ]>)+
匹配一個或多個HTML標簽,但僅匹配具有單個字符標簽名稱的HTML標簽。 您還需要(<[AZ]+>)+
來匹配<TD>
標簽。
所需字符串的模式也需要一個量詞,並且該集合需要匹配更多字符,因為所需字符串不只包含小寫字符。
alert("<TD><B><B>13COB251</B> - Desired String</B></TD>".replace(/(<[A-Z]+>)+13COB251(<\/[A-Z]>) - ([A-Za-z ]+)(<\/[A-Z]+>)+/gi, "$3"))
演示: http : //jsfiddle.net/RH6zc/
您忘記考慮標簽內和所需字符串中的空格。
/(< *[A-Z]*>)+13COB251(< *\/[A-Z]*>)+ - ([a-z ]*)(< *\/[A-Z]*>)+/gi
^ ^ ^ ^
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.