早些时候,我使用以下RegExp来验证锚与HREF属性应该有文本:
//regex for invalid anchor tag like: <a href="#"/> or <a href="#"> </a>
var pattern = new RegExp('<a [^>]*(/>|>\s*</a>)', 'g');
现在我有了额外的验证要求,如果带有name属性的锚没有文本,它应该显示有效,如下面的例子所示:
<a href="www.google.com">the link</a> Don't Match
<a name="google"></a> Don't Match
<a href="www.google.com"> </a> Match
<a href="www.google.com"></a> Match
<a name="google">the link</a> Match
我使用以下代码来匹配正则表达式:
function validateText(text, rteObj) {
//regex for invalid anchor tag like: <a href="#"/> or <a href="#"> </a>
var pattern = new RegExp('<a [^>]*(/>|>\s*</a>)', 'g');
var textMatch = text.match(pattern);
if (textMatch) {
rteObj.findParentByType("tabpanel").activate(rteObj.findParentByType("panel"));
rteObj.markInvalid("Please remove the invalid anchor tags from the text content");
return false;
}
return true;
}
谢谢你,问候。
我想,这就是你想要的:
<a.*(?=name="([^"]*)")[^>]*>([^$|s+]*)</a>
工作例1
它将捕获<a name="google"></a>
(在您的情况下是有效的),但不捕获<a name="google">the link</a>
。
编辑1:
根据您的评论,以下regex将执行反向逻辑:
<a.*(?=name="([^"]*)")[^>]*>([^<]+)</a>
工作例2
编辑2:
根据您的附加请求匹配<a href="#"> </a>
:
<a.*(?=href="([^"]*)")[^>]*>([^<]+)</a>
工作例3
编辑3:
基于提问者的评论,只验证空值,例如<a href="#"> </a>
而不验证<a href="#">The link</a>
:
<a.*(?=href="([^"]*)")[^>]*>([^s+]+|[^S+]+)</a>
工作例4
编辑4:
由于提问者总是在编辑问题,这里是最后(最后)更新:
<a.*(?=href="([^"]*)")[^>]*>([^s+]+|[^S+]+|w*)</a>|<a.*(?=name="([^"]*)")[^>]*>(s*S+.*)</a>
它将验证:
<a href="www.google.com">the link</a> Don't Match
<a name="google"></a> Don't Match
<a href="www.google.com"> </a> Match
<a href="google.com"></a> Match
<a name="google">The link</a> Match
工作例5