javascript - 使用多种模式构建跨度标签的正则表达式

标签 javascript regex

除了它们是什么之外,我对正则表达式一无所知......:(

我在 JavaScript 函数中有这段代码:

var foroFormatting = function (text) {
    var newText = text;
    var findreps = [
        { find: /^([^\-]+) \- /g, rep: '<span class="ui-selectmenu-item-header">$1</span>' },
        { find: /([^\|><]+) \| /g, rep: '<span class="ui-selectmenu-item-content">$1</span>' },
        { find: /([^\|><\(\)]+) (\()/g, rep: '<span class="ui-selectmenu-item-content">$1</span>$2' },
        { find: /([^\|><\(\)]+)$/g, rep: '<span class="ui-selectmenu-item-content">$1</span>' },
        { find: /(\([^\|><]+\))$/g, rep: '<span class="ui-selectmenu-item-footer">$1</span>' }
    ];
    for (var i in findreps) {
        newText = newText.replace(findreps[i].find, findreps[i].rep);
    }
    return newText;
}

这段代码需要一个像这样的字符串

John Doe - 78 West Main St Apt 3A | Bloomsburg, PA 12345 (footer text)

并将其分成四个跨度元素,对吗?

我想对与此稍有不同的字符串应用相同的格式

John Doe - 78 West Main St Apt 3A | Bloomsburg, PA 12345

我该如何修改正则表达式?

编辑

我正在尝试使用 this plugin (第三个例子)我的字符串与最后一部分中的原始字符串不同

最佳答案

如果您删除的只是(页脚文本),那么无需最后一个替换正则表达式的相同函数也将起作用。

var foroFormatting2 = function (text) {
    var newText = text;
    var findreps = [
        { find: /^([^\-]+) \- /g, rep: '<span class="ui-selectmenu-item-header">$1</span>' },
        { find: /([^\|><]+) \| /g, rep: '<span class="ui-selectmenu-item-content">$1</span>' },
        { find: /([^\|><\(\)]+)$/g, rep: '<span class="ui-selectmenu-item-content">$1</span>' }
    ];
    for (var i in findreps) {
        newText = newText.replace(findreps[i].find, findreps[i].rep);
    }
    return newText;
}

我删除了捕获并格式化(页脚文本)的部分。我建议阅读regular expressions 。它们是一个很棒的工具。

关于javascript - 使用多种模式构建跨度标签的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3956100/

相关文章:

javascript - 如何创建双向 ko.compulated() 数组过滤器

javascript - 在 JavaScript 中隐藏/显示 - 停止播放 YouTube iframe 视频

javascript - 如何处理javascript面向对象的原型(prototype)

javascript - jquery获取表中的行值

regex - matchstr 与 vimscript 中的正则表达式不匹配

php - 如何从 .phpcs.xml 中的 PHP Code Sniffer 检查中排除某些目录以外的所有内容?

javascript - 隐藏 `prototype` 属性,避免通过自定义函数覆盖 native 函数

regex - golang正则表达式替换单个数字

java - 使用正则表达式在 Java 中提取子字符串。如何包含空格字符

用于匹配 Windows 和 Posix 系统的日期时间的 C++ 正则表达式模式