REGEX(正则表达式)验证html字符串的粗体标记

时间:2014-03-24 12:42:14

标签: javascript html regex

我是正则表达式的新手。任何人都可以建议我下面的字符串等效的正则表达式。我需要在输入文本框中验证这些。

"Start<b>Middle</b>End"

"Start<b>End</b>"

"<b>Start</b>End"

"StartMiddleEnd"

2 个答案:

答案 0 :(得分:2)

你真的应该使用DOM。

首先将字符串转换为DOM对象,一旦完成,检查它是否包含b标记:

function hasBTag(html) {
    var parser = new DOMParser();

    var node = parser.parseFromString(html, "text/html");
    var allNodes = node.getElementsByTagName('*');

    for (var i = -1, l = allNodes.length; ++i < l;) {
        if (allNodes[i].nodeName === 'B' ) {
            return true;
        }
    }

    return false;
}

(function() {
    var html = [
        '"Start<b>Middle</b>End"',
        '"Start<b>End</b>"',
        '"<b>Start</b>End"',
        '"StartMiddleEnd"'
    ];

    for (var i = 0, l = html.length; i < l; i++) {
        if (hasBTag(html[i])) console.log(html[i] + ' haz b tag');
    }
}());

演示:http://jsfiddle.net/mZu7Z/

尝试使用正则表达式解析HTML几乎总是一个糟糕的主意。

答案 1 :(得分:0)

老兄,你不是那么清楚。 只是为了检查粗体标签是否存在你不需要正则表达式。如果你想检查任何模式而不仅仅是一个固定的文本,那么正则表达式主要出现在图片中。假设您不想替换,但只有测试更粗的标签存在,而不仅仅是使用indexOf。

var strToTest = "Hi, my name is <b>Ankur</b>";
if(strToTest.indexOf("<b>")!=-1 || strToTest.indexOf("</b>")!=-1)
{
   console.log("String includes bold tag");
}

很少有人说你需要逃避&lt;,&gt;和/。但是在这种情况下不需要它。

如果要使用正则表达式检查开始和结束粗体标记,请使用此

  

/ \&lt; /?b&gt; / gi

这将测试