javascript - 正则表达式 - 从字符串中获取 x 个字符,但 html 标签不计入计数

标签 javascript regex

如标题所示,我需要从字符串中获取 X 个字符,但 HTML 不包括在计数中。

示例字符串

Some <i>t</i>est <b>string</b> test

会输出9个字符

Some <i>t</i>est

输出13个字符

Some <i>t</i>est <b>str

输出19个字符

Some <i>t</i>est <b>string</b> te

我不太确定从基础到哪里

(.*?){0,10}

另外,有没有办法制作 HTML 编码的字符,例如<算作一个字符?

最佳答案

要匹配字符串中一定数量的字符,首先要排除子字符串,如 <...>从计数和计数&XX*;实体作为一个单元,你可以使用

^(?:&[^\s;]*;|(?:<[^<>]*>)*.){20}

参见 regex demo .

详情

  • ^ - 字符串开始
  • (?: - 开始一个非捕获组,它将作为以下替代方案的容器:
    • &[^\s;]*; - 一个 & , 0 个或多个除空格和 ; 以外的字符然后 ;
    • | - 或者
    • (?:<[^<>]*>)*. - < 的 0 次或多次重复, 除 < 以外的 0+ 个字符和 >然后 > , 然后是换行符以外的任何字符(使用 DOTALL 修饰符将任何字符与 . 匹配)
  • ){20} - 容器组的结尾和限制量词告诉引擎匹配其模式的 20 次连续出现。

关于javascript - 正则表达式 - 从字符串中获取 x 个字符,但 html 标签不计入计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53374009/

相关文章:

php - 如何在运行前检查 vsprintf 是否具有正确数量的参数

java - 条件正则表达式使用 Java 匹配文本输入流中的组,忽略格式错误的行

javascript - 如何在javascript类中制作数组?

javascript - 当自动回发打开时如何使用 javascript 选择 asp.net RadioButton

jquery - 正则表达式,用jQuery删除字符串中的最后一个特定字符

c++ - C++ 中的正则表达式如何搜索有效的 Linux 设备节点?

javascript - 在javascript中的第一个数字之前获取一个子字符串

javascript - 遍历复杂的 Javascript 对象并为其设置值

javascript - 如何使用angular js在母版页中设置事件菜单

javascript - 各种Javascript优化项目如何影响DOM性能?