当前位置: 首页 > 知识库问答 >
问题:

javascript - 正则,如何判断字符串内只存在指定字符?

夏侯和韵
2023-06-14

我的使用场景:
需要判断富文本编辑器内是否只输入了空格or回车(这种情况我会判定为空)

let txt = '&nbsp; &nbsp;&nbsp;<br /><br /><br /><br />&nbsp; &nbsp; &nbsp;<br /><br /><br /><br />&nbsp; &nbsp;&nbsp;<br /><br />&nbsp; &nbsp; &nbsp;&nbsp;'

比如上面这串就是只输入了空格和回车后,富本文返回的内容,用正则要如何判断呢?

以及还有一个拓展需求,就是我想要去除富文本编辑器内,内容首尾的空格和回车要如何匹配呢?
感觉这个应该和上面思路有共同的地方

共有6个答案

谢旻
2023-06-14

有个不用正则来判断字符串是否都是空白或换行符的方法,就是把字符串放入一个空div节点中渲染,再判断它的子节点是否都是br节点或空白文本节点:

function isEmptyText(text) {
    var div = document.createElement("div");
    div.innerHTML = text;
    var nodes = div.childNodes;
    for (var i = 0; i < nodes.length; ++i) {
        var node = nodes[i];
        var name = node.nodeName;
        var value = node.nodeValue && node.nodeValue.trim();
        if (value || name !== "#text" && name !== "BR") return false;
    }
    return true;
}
console.log(isEmptyText(txt));
费和惬
2023-06-14
function checkIsEmpty(html) {
    const div = document.createElement('div');
    div.innerHTML = html;
    if (/^\s+$/m.test(div.innerText)) {
        return true;
    }
    return false;
}

// 调用
checkIsEmpty('&nbsp; &nbsp;&nbsp;<br /><br /><br /><br />&nbsp; &nbsp; &nbsp;<br /><br /><br /><br />&nbsp; &nbsp;&nbsp;<br /><br />&nbsp; &nbsp; &nbsp;&nbsp;'); // true
checkIsEmpty('&nbsp; &nbsp;&nbsp;xx<br /><br /><br /><br />&nbsp; &nbsp; &nbsp;<br /><br /><br /><br />&nbsp; &nbsp;&nbsp;<br /><br />&nbsp; &nbsp; &nbsp;&nbsp;'); // false
衡翰藻
2023-06-14
if(txt.replaceAll("&nbsp;",'').replaceAll("<br />",'').trim()){
    console.log("输入内容有效")
}

如果字段固定是 和
上面这样判断是否为空 是否可行?

或者 下面这样

var div = document.createElement("div");
div.innerHTML = txt;
if(!div.innerText.trim()){
console.log("未输入有效内容")
}
司马璞
2023-06-14

用字符串的方法 replace 或者 replaceAll,把所有空格和回车替换成空,判断剩余字符串长度是否为0即可

百里修真
2023-06-14
/^\s*((&nbsp;|<br\s*\/?>)\s*)*$/.test(txt)
谢财
2023-06-14
function isEmptyRichText(str) {
    let count = 0;
    for (const x of str.matchAll(/(?:&nbsp;)|(?:<br[ ]*\/>)|(?:[ ]+)/g)) {
        const [match] = x
        const { index } = x;

        if (count === index) {
            count += match.length;
        } else {
            return false
        }
    }
    return true
}

正则匹配空格or回车,然后判断匹配内容是否连续,不连续就证明不全是空格和回车。


首部匹配:

/^((&nbsp;)|(<br[ ]*\/>)|([ ]+))+/

尾部匹配:

/((&nbsp;)|(<br[ ]*\/>)|([ ]+))+$/

我傻了,限定开头和结尾直接 test 就好了。

/^((&nbsp;)|(<br[ ]*\/>)|([ ]+))*$/
 类似资料:
  • 本文向大家介绍JavaScript判断一个字符串是否包含指定子字符串的方法,包括了JavaScript判断一个字符串是否包含指定子字符串的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript判断一个字符串是否包含指定子字符串的方法。分享给大家供大家参考。具体分析如下: 下面的JS代码,为String对象定义了一个contains方法用于判断字符串是否包含子字符串,非常有

  • 根据不同的值,判断应该用什么元素,大佬们有什么方法优化一下呀

  • Python3 实例 以下代码演示了Python字符串的判断: # Filename : test.py # author by : www.runoob.com # 测试实例一 print("测试实例一") str = "runoob.com" print(str.isalnum()) # 判断所有字符都是数字或者字母 print(str.isalpha()) # 判断所有字符都是字母 pr

  • 问题内容: 我有这串 使用JavaScript,将其解析为最快的方法是 问题答案: 使用JavaScript的功能:

  • 问题内容: 我有一个带有文本框的页面,用户应在其中输入24个字符(字母和数字,不区分大小写)的注册码。我曾经限制用户输入24个字符。 注册代码通常以破折号分隔的字符组形式给出,但是我希望用户输入不带破折号的代码。 如何在没有jQuery的情况下编写JavaScript代码,以检查用户输入的给定字符串不包含破折号,或者更好的是,仅包含字母数字字符? 问题答案: 在中找到“你好”

  • 本文向大家介绍C#中如何利用正则表达式判断字符,包括了C#中如何利用正则表达式判断字符的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,下面代码给大家介绍下利用正则表达式判断字符的方法,具体代码如下所示: 以上所述是小编给大家介绍的C#中如何利用正则表达式判断字符,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!