创建javascript正则表达式以查找以#开头的数字(但不包括HTML特殊字符或现有链接)
我正在尝试从某些字符串创建链接。我试过这个:创建javascript正则表达式以查找以#开头的数字(但不包括HTML特殊字符或现有链接),javascript,regex,Javascript,Regex,我正在尝试从某些字符串创建链接。我试过这个: ([^&]#)([0-9]+)(?![^<>]*>) 头奖是将其浓缩成一个正则表达式。这可能吗?试试(^(#|())((0-9)+(?!(*))这是我的解决方案^^。希望这对你有帮助 /#[0-9]+/gi 只需使用以下正则表达式/[^&|href=“]”(#[0-9]+)/g 这是,给出了以下结果: 具有以下匹配项: 编辑: 我错过了您希望避免在链接中匹配此表达式的部分,这是您需要的正则表达式: [^&|"
([^&]#)([0-9]+)(?![^<>]*>)
头奖是将其浓缩成一个正则表达式。这可能吗?试试
(^(#|())((0-9)+(?!(*))
这是我的解决方案^^。希望这对你有帮助
/#[0-9]+/gi
只需使用以下正则表达式
/[^&|href=“]”(#[0-9]+)/g
这是,给出了以下结果:
具有以下匹配项:
编辑:
我错过了您希望避免在链接中匹配此表达式的部分,这是您需要的正则表达式:
[^&|"](#[0-9]+\b)(?!<\/a>)
也许?这似乎有效,但在我的测试2的真实世界测试中失败。奇怪?奇怪,我想你应该用如何执行真实生活测试来更新问题。Tx。我已经更新了。测试2通过了,但实际上我的真实世界测试不是测试2的一个示例,而是新添加的测试5。那么,也许?这对我不起作用。它正在吞噬标记的右括号。例如,这把小提琴坏了,但只需使用我代码片段中的代码来替换它,我有:……但它仍然不起作用。请注意标记如何变成@geoidesic是的,我看到了,问题是正则表达式与序列组匹配,但也捕获了前面的字符,因此解决方案是使用
match=regex3.exec(string)[1]
,然后在替换中使用match
变量,我希望它会有所帮助。Thx@chsdk.似乎对某些字符串有效,但对其他字符串无效。我已使用所有测试更新了JSFIDLE:。
/#[0-9]+/gi
[^&|"](#[0-9]+\b)(?!<\/a>)