2016-01-20 58 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