javascript - 使用正则表达式后的新正则表达式

时间:2014-11-13 02:53:19

标签: javascript regex

我有以下文字

TABLES:
  TABLE1: COLUMN1;
  TABLE2: COLUMN_A;
  TABLE3(TABLE1, TABLE2): COLUMN_1, COLUMN_2;
ENDTABLES

首先,我希望得到TABLES - ENDTABLES和我之间的内容:

var text = "all of the above";
var tablesRegex = /TABLES\:([\s\S]*?)ENDTABLES/;
alert(tablesRegex.exec(text)[1]);

但后来我想把它放在一个数组中:

["TABLE1: COLUMN1","TABLE2: COLUMN_A","TABLE3(TABLE1, TABLE2): COLUMN_1, COLUMN_2"]

我找到this,但坦率地说我不明白。

有关如何获取该阵列的任何帮助吗?

由于

更新

虽然我可以使用以下方法拆分匹配字符串:

tablesRegex.exec(text)[1].split(";");

我实际上正在寻找正则表达式解决方案(如果可能

更新2

新的正则表达式...而不是/TABLES\:([\s\S]*?)ENDTABLES/,以获取没有分号的字符串内的内容

3 个答案:

答案 0 :(得分:1)

您声明您正在寻找正则表达式解决方案......

var results = str.match(/\bTABLE\d[^;]+/g)
console.log(results)



var str = '\
TABLES: \
  TABLE1: COLUMN1; \
  TABLE2: COLUMN_A; \
  TABLE3(TABLE1, TABLE2): COLUMN_1, COLUMN_2; \
ENDTABLES';

var results = str.match(/\bTABLE\d[^;]+/g)

document.getElementById('foo').innerHTML = 
   '<ul><li>' + 
    results.join('</li><li>') + 
    '</li></ul>';
&#13;
<div id="foo"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我认为您可以使用;

拆分文本
var tablesRegex = /TABLES\:([\s\S]*?)ENDTABLES/;
var x = tablesRegex.exec(text)[1];

var array = x.split(/\s*;\s*/)

答案 2 :(得分:0)

试试这个:

function splitWeirdTables(str){
  return str.replace(/^TABLES\:(.+)ENDTABELS$/, '$1').split(/;/);
}
console.log(splitWeirdTables(yourStringHere));