我使用这个正则表达式的JavaScript正则表达式的问题
<a [^>]*href[ ]*=[ ]*\"|'[^>]\"|'[^>]*>
在例如要搜索的字符串唯一的结果的一部分相匹配只匹配
'blablabla') href='www.hello.com' onclick=alert('blablabla') >
任何想法,问题出在哪里?
我使用这个正则表达式的JavaScript正则表达式的问题
<a [^>]*href[ ]*=[ ]*\"|'[^>]\"|'[^>]*>
在例如要搜索的字符串唯一的结果的一部分相匹配只匹配
'blablabla') href='www.hello.com' onclick=alert('blablabla') >
任何想法,问题出在哪里?
你|
是放错了地方:
<a [^>]*href[ ]*=[ ]*\"|'[^>]\"|'[^>]*>
有效的是:
<a [^>]*href[ ]*=[ ]*\"
或'[^>]\"
或'[^>]*>
如果你想标记“或”在这个确切的地方使用[]
:
<a [^>]*href\s*=\s*["'][^>]*["'][^>]*>
例子:
a = "idhasidhioashdoihas <a onclick=alert('blablabla') href='www.hello.com' onclick=alert('blablabla') > asdfsgdufisdugfusdg";
a.match(/<a [^>]*href\s*=\s*["'][^>]*["'][^>]*>/)
["<a onclick=alert('blablabla') href='www.hello.com' onclick=alert('blablabla') >"]
好的,那就工作了。非常感谢。 只需要在\“ – user2316602
\之前加\ \如果这适合你 - 随时[接受答案] (http://stackoverflow.com/help/someone-answers) – mishik
你不正确测试了两种可能的属性值的分隔符。您可以使用此一:
/<a [^>]*href[ ]*=[ ]*[\"']?[^>][\"']?[^>]*>/
我只是改变\"|'
到[\"']?
(请注意,它可能不会有行情可言,因此?
)
的字符您使用并不总是合适的课程和你必须由一个组包围你的替换(即:(?:'|")
),但你并不需要它。你可以试试这个,用同样的想法:
<a (?:[^h>]+|h(?!ref))*\bhref\s*=\s*["'][^"']*["'][^>]*>
但是,如果你只想要找到一个链接标签,你可以使用<a.+?>
作为thg435表明它。
(需要注意的是href值并不总是引号之间:
<a (?:[^h>]+|h(?!ref))*\bhref\s*=\s*(?:["'][^"']*["']|[^\s>]*)[^>]*>
(或一定要具有相同的引号)
<a (?:[^h>]+|h(?!ref))*\bhref\s*=\s*(?:(["'])(?:\\\1|[^"']+|(?!\1)["'])*\1|[^\s>]*)[^>]*>
'[] *'确实应该'\ s *' – mishik
为什么不简单地'/ /'? –
georg