Javascript正则表达式-匹配2个子字符串
我不擅长正则表达式,需要一些帮助 我有这样的字符串:data some thing=“5 10 red”。“某些数据”一词是不变的,“事物”会发生变化“事物”也可能包含破折号。双引号中的值仅包含字母数字符号或空格 是否可以仅使用正则表达式获取双引号中的“thing”和值?如果是,那么我应该使用什么表达?我尝试过使用lookarounds,但没有多大成功。您可以使用:Javascript正则表达式-匹配2个子字符串,javascript,regex,match,Javascript,Regex,Match,我不擅长正则表达式,需要一些帮助 我有这样的字符串:data some thing=“5 10 red”。“某些数据”一词是不变的,“事物”会发生变化“事物”也可能包含破折号。双引号中的值仅包含字母数字符号或空格 是否可以仅使用正则表达式获取双引号中的“thing”和值?如果是,那么我应该使用什么表达?我尝试过使用lookarounds,但没有多大成功。您可以使用: var result = data.match(/data-some-(.*?)="(.*?)"/); 结果数组将包含三个元素:
var result = data.match(/data-some-(.*?)="(.*?)"/);
结果数组将包含三个元素:
- 0:完全匹配(不符合您的兴趣)
- 1:等号前的可变部分
- 2:引号之间的值
var data='data some thing=“5 10 red”';
var result=data.match(/data-some-(.*?)=“(.*?”/);
编写(结果[1]+'
'+结果[2])代码>我理解点和星,但你能解释一下问号在这里是如何工作的吗?谢谢你的回答。我会尽快标记:)问号会影响前一颗星。它把它从一颗贪婪的星星变成了一颗懒惰的星星。实际上,这意味着只要正则表达式能够前进并匹配它后面的模式,它就会这样做(lazy)。如果没有问号,以下数据将以错误的方式拆分:data some thing=“5 10 red”;其他一些东西=“hallo”
。作为尝试用regexp解析HTML无效的一个小例子,如果属性值是单引号,那么这将失败。如果在等号的两边都有空格,它将失败。如果输入表单xxx data some
,它将失败。等等。等等。不要用regexp解析HTML。@torazaburo,你完全正确,如果OP确实想在更大的HTML解析上下文中使用它(问题中没有提到),那将是一个坏主意。在DOM中加载它将是一种可行的方法。但是OP谈到了一些字符串……显然(?)这是HTML元素上的数据属性。为什么要在HTML上使用regexp?相反,在HTML元素(或elt.dataset
)上的属性中搜索正确形式的属性,然后可以直接检索属性值。我会这样做,但我是在使用节点解析字符串,而不是在浏览器中解析文档。抱歉没有完全弄清楚:)这并没有改变你不应该用JS解析HTML的事实。如果有必要,请为节点使用DOM包。如果我理解正确,我应该始终使用DOM解析器来解析HTML,在这种情况下,正则表达式是完全邪恶的?事实上,这说明了这一点。