正则表达式搜索起始字符,介于两者之间的任何内容,然后是结束字符?

时间:2013-12-04 02:43:41

标签: javascript regex

所以基本上,我有一个庞大的值列表,我从我的网站复制,并希望它们只是纯文本。我需要为Javascript创建一个正则表达式来删除不需要的东西

以下是值之前的值:

<option value="111122223333">Some text (45)</option>
<option value="345835385390">Some text (10)</option>
<option value="456727235764">Some text (50)</option>

以后是他们需要的样子:

Some text
Some text
Some text

这可能是1个正则表达式,还是需要很多?

我的想法是正则表达式在{/ 1}}之间查找任何内容,然后<可以在开始和结束>标记上使用。然后可以稍微修改正则表达式以查找打开option然后关闭(以删除“Some text”字符串左侧的计数器数字。

仍在学习正则表达式,所以如果有人也可以在他们的答案中添加一个小解释,那么我就可以对它有所了解。感谢。

2 个答案:

答案 0 :(得分:1)

如果你可以使用像jQuery这样的库,你可以简化这个。在这种情况下,您可以使用jQuery对象的text()方法获取内部文本,然后运行一个简单的正则表达式来删除'(xx)'部分:

var vals = $('option').map(function() {
   return $(this).text().replace(/\s*\(\d*\)$/, '');
});

// vals => ["some text", "some text", "some text"]

这是一个小提琴:http://jsfiddle.net/jhummel/U46pH/

如果你不能使用库,我认为你正在寻找像这样的正则表达式:

/<[^>]+>([^\(]+)\(\d*\)<[^>]+>/g

修改

你问了一个正则表达式的解释,让我们逐个看一下

  • / =启动正则表达式
  • &LT; =找到一个'&lt;'字符
  • [^&gt;] + =找到任何不是'&gt;'的字符一次或多次
  • &GT; =找到'&gt;'字符
  • (=开始一组,parens中的任何内容都会保存以供日后使用
  • [^(] + =找到任何不是'(''一次或多次的字符 - 需要用反斜杠转义它,因为paren是正则表达式中的保留字符
  • )=关闭小组
  • (=找一个'('char - 需要再用反斜杠来逃避它
  • \ d * =查找任何数字零次或多次
  • )=找一个')'字符 - 再次转义
  • &LT; =找到一个'&lt;'字符
  • [^&gt;] + =找到任何标有'&gt;'的字符一次或多次
  • &GT; =找到'&gt;'字符
  • / =结束正则表达式
  • g =正则表达式标志。意味着在第一场比赛后发现所有比赛都没有停止

答案 1 :(得分:0)

如果您希望完成这一切,那么您可以使用以下内容:

(大于)(+)(≤)

然后从比赛中抓住第二组。

编辑:括号用于表示组。