Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用多个模式构建跨度标记的正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 使用多个模式构建跨度标记的正则表达式

Javascript 使用多个模式构建跨度标记的正则表达式,javascript,regex,Javascript,Regex,除了它们是什么,我对正则表达式一无所知…:( 我在javascript函数中有以下代码: var foroFormatting = function (text) { var newText = text; var findreps = [ { find: /^([^\-]+) \- /g, rep: '<span class="ui-selectmenu-item-header">$1</span>' }, { find:

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

我在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
如何修改正则表达式

编辑


我尝试使用(第三个示例)我的字符串,它与上一部分中的原始字符串不同

您是否考虑过修改输入格式,可能是JSON?这看起来是一种非常脆弱的解析格式


确切的预期输出是什么?使用所需的跨距

如果您要删除的只是
(页脚文本)
,那么不使用最后一个替换正则表达式的相同函数也可以工作

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;
}
var-foroformating2=函数(文本){
var newText=文本;
变量findreps=[
{find://([^\-]+)\-/g,rep:'$1'},

{find:/([^\|>您不需要更改任何内容,代码在没有括号中的页脚文本的情况下工作得非常完美。

好吧,让我给您一些提示,让这变得非常简单。将您的输入格式更改为此

这是一个JSON格式的字符串数组

var arr = ['John Doe', '78 West Main St Apt 3A', 'Bloomsburg, PA 12345', '(footer text)'];
var outputStr = '<span class="ui-selectmenu-item-header">' + 
       //This line concats the array elements with this text inserted
       // between each element
       arr.join('</span><span class="ui-selectmenu-item-header">') + 
'</span>';
var arr=['John Doe','78 West Main St 3A公寓','Bloomsburg,PA 12345','(页脚文本)];
变量outputStr=''+
//此行包含插入此文本的数组元素
//在每个元素之间
arr.join('')+
'';

你想要的结果是什么?你想要空的
?请查看我在问题末尾的编辑。没问题。记住mykhal的答案。在查看原始函数后,这可能确实是真的。但是,生成的
集可能不是你想要的-即
页脚的类出现。
var arr = ['John Doe', '78 West Main St Apt 3A', 'Bloomsburg, PA 12345', '(footer text)'];
var outputStr = '<span class="ui-selectmenu-item-header">' + 
       //This line concats the array elements with this text inserted
       // between each element
       arr.join('</span><span class="ui-selectmenu-item-header">') + 
'</span>';