2016-01-20 63 views
2

比如我有HTML:正則表達式來獲得HTML屬性沒有價值

<html> 
    <span href="" /> 
    <span href="" noname /> 
    <span noname /> 
    <span="sss" /> 
</html> 

我要找到每一個還沒有得到=「」屬性。在這個例子中這將是:「NONAME」

我的嘗試是:

<[A-Za-z]+^={1}.*[A-Za-z]+^\=].*> 

但沒有成功......

在這種情況下,第一屬性「跨度」都OK ,所以RegEx不應該找到它。只有這些在標籤的中間。

回答

1

您可以利用該屬性的使用方式,而無需使用任何值。

  1. 它有一個空間之前,它
  2. 它有一個空間或/>

此基礎上,你可以使用正則表達式\s([a-zA-Z]+)[\s/>]

正則表達式說明:

  1. \s:匹配一個空格字符
  2. ([a-zA-Z][a-zA-Z-]+):匹配一個字開始字母,並且可以包含連字符-符號和在捕獲的組添加它
  3. [\s/>]:匹配任一空間,/,或>

爲演示目的使用JavaScript:

var str = `<html> 
 
    <a href="">link</a> 
 
    <span class="" noname >Lorem</span> 
 
    <input required /> 
 
    <span id="sss" >More Content</span> 
 
    </html>`; 
 

 
var regex = /\s([a-zA-Z][a-zA-Z-]+)[\s\/>]/g; 
 

 
var attributes = str.match(regex); 
 
document.body.innerHTML = attributes;

+0

Greeeat,謝謝! – liquide