【发布时间】:2021-10-27 02:03:22
【问题描述】:
accusantique et o (MLS® R2608327)。 Sed ut perspiciatis voluptatem mls 清单 :MLS®#:12243235435 beatae vitae dicta MLS Number#:12243235435 sunt 3543654654675645654654 解释。
鉴于上面的字符串,我如何在字符串中提取“(MLS® R2608327)”或“MLS®#:12243235435”或“MLS Number#:12243235435”?它的值可能会改变,因为这是动态的。因此,其他实例可能是“135435”。位置/顺序也可能发生变化,可能在中间或最后部分。
这个正则表达式
^ ((MLS|mls|MLS|MLS®|mls®|Mls®|MLS®|MLS®编号|mls 编号|Mls 编号|mls®|Mls®|属性 ID|)[^A-Za-z0-9])?(([^?*/\:; ]{1,23}\d{2,23}[^?*/\ :; ]{1,23}) *)$
这个正则表达式运行良好,但它没有从 dfnjkgfkhgb mls:#234234245 fgjhfgf 3498234789 dshfdsfgbjhsf 之类的字符串中提取 mls:#w3432423。
【问题讨论】:
-
查看 Reference - What does this regex mean? 和 regex tag wiki 并使用像 RegEx101 这样的正则表达式调试器。
-
如果省略锚点,则模式似乎与
dfnjkgfkhgb mls:#234234245 fgjhfgf 3498234789 dshfdsfgbjhsf.中的mls:#w3432423匹配 也许您可以稍微缩短模式并使用不区分大小写的标志/i参见 regex101.com/r/VAvfcg/1 请注意,在示例字符串,您将获得与组 1 和组 2 的多个匹配项,例如使用 matchAll -
非常感谢@Thefourthbird,它运行良好。但它也在拾取数字,就像它也在拾取“3498234789”一样。有没有办法在这个正则表达式中添加一个条件,它只匹配以这三个字符“MLS”开头的字符串
-
@TestID 你是这个意思吗?
\b((?:MLS(?:&reg|®?(?: Number)?))[^A-Za-z0-9]*)([^?*\/\\:;<> ]{1,23}\d{2,23}[^?*\/\\:;<> ]{1,23})regex101.com/r/c2Y8OV/1 -
非常感谢@Thefourthbird 这非常有效。
标签: javascript regex-greedy regexp-replace