除了它们之外,我对正则表达式一无所知...... :(
我在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(第三个示例),其中包含一个与上一部分中的原始字符串不同的字符串
答案 0 :(得分:1)
如果您要删除的只是(footer text)
,那么没有最后替换正则表达式的相同函数将起作用。
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;
}
我删除了捕获并格式化(footer text)
的部分。我建议你阅读regular expressions。它们是一个很好的工具。
答案 1 :(得分:1)
您无需更改任何内容,代码完美无需括号中的页脚文本
答案 2 :(得分:1)
好吧,让我给你一些提示,让这个超级简单。将输入格式更改为此。
这是一个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>';
答案 3 :(得分:0)
您是否考虑过修改输入格式,也许是JSON?这看起来像一个非常脆弱的解析格式。
预期产量究竟是多少?使用所需的跨度