所以,基本上,我有一个从我的网站复制的大量值列表,希望它们只是纯文本。我需要为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个正则表达式可以做到这一点吗?还是需要许多正则表达式?
我的想法是,正则表达式查找介于两者之间的<
,然后>
可以用于打开和关闭option
标记。然后,可以稍微修改regex,以查找打开(
,然后关闭)
,以删除"Some text"字符串左侧的计数器数字。
仍然在学习regex,所以如果有人能在他们的答案中添加一个小的解释,让我对它有一些了解,那就太好了。谢谢。
如果您可以使用像jQuery这样的库,那么您可能可以简化它。在这种情况下,您可以使用jQuery对象的text()方法来获取内部文本,然后运行一个简单的regex来删除"(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
编辑
您要求提供正则表达式的解释,让我们逐一查看
- /=启动正则表达式
- <=查找'<'字符
- [^>]+=一次或多次查找任何不是'>'的字符
- >=查找'>'字符
- (=启动一个组,parens中的任何内容都将保存以备以后使用
- [^(]+=查找一次或多次非"("字符-需要用反斜杠转义,因为paren是regex中的保留字符
- )=关闭组
- (=找到一个"("字符-需要再次使用反斜杠对其进行转义
- \d*=查找任何数字零次或多次
- )=找到一个")"字符-再次转义
- <=查找'<'字符
- [^>]+=找到一个或多个音符为'>'的任何字符
- >=查找'>'字符
- /=结束正则表达式
- g=正则表达式标志。意味着在第一场比赛后发现所有比赛都没有停止
如果这就是您希望完成的全部,那么您可以使用以下内容:
(>)(.+)(<)
然后把第二组从比赛中抢出来。
编辑:括号用于表示组。