Heim > Backend-Entwicklung > PHP-Tutorial > javascript - 正则表达式 如何根据某个条件是否成立,来选择匹配 2 个可选表达式中的其中一个。

javascript - 正则表达式 如何根据某个条件是否成立,来选择匹配 2 个可选表达式中的其中一个。

WBOY
Freigeben: 2016-06-06 20:18:19
Original
1678 Leute haben es durchsucht

场景:
原先有一个字符串的内容匹配,现在这个字符串改成了另一种样子。但是对于已经发版的客户端还要支持旧版的字符串匹配。

例:
旧字符串: android/360 1.0
新字符串: android/aaa/360/1.0

现在想写一个正则表达式,既想能匹配旧字符串,也想匹配新字符串。
有没有办法根据某个条件成立,来选择其中一种表达式?

旧表达式匹配正则:
([iOS|android])\\scoco/([\\S\\s])\\s([\\S]*)
旧正则测试字符串
android coco/360 1.0

新表达式匹配正则:
"([iOS|android])[\\s|\\S]coco/([\\S])/([\\S])/([\\S])/([0-9])";
新正则测试字符串:
android coco/android_deviceId/360/1.0/123456

如何让一个正则,既可以支持新的,也可以支持旧的?

<code>([iOS|android]*)[\\s|\\S]coco/[([\\S\\s]*)\\s([\\S]*)]  `**|**`  [([\\S]*)/([\\S]*)/([\\S]*)/([0-9])]
</code>
Nach dem Login kopieren
Nach dem Login kopieren

类似于上面这个错误的正则思路。 该如何写?

回复内容:

场景:
原先有一个字符串的内容匹配,现在这个字符串改成了另一种样子。但是对于已经发版的客户端还要支持旧版的字符串匹配。

例:
旧字符串: android/360 1.0
新字符串: android/aaa/360/1.0

现在想写一个正则表达式,既想能匹配旧字符串,也想匹配新字符串。
有没有办法根据某个条件成立,来选择其中一种表达式?

旧表达式匹配正则:
([iOS|android])\\scoco/([\\S\\s])\\s([\\S]*)
旧正则测试字符串
android coco/360 1.0

新表达式匹配正则:
"([iOS|android])[\\s|\\S]coco/([\\S])/([\\S])/([\\S])/([0-9])";
新正则测试字符串:
android coco/android_deviceId/360/1.0/123456

如何让一个正则,既可以支持新的,也可以支持旧的?

<code>([iOS|android]*)[\\s|\\S]coco/[([\\S\\s]*)\\s([\\S]*)]  `**|**`  [([\\S]*)/([\\S]*)/([\\S]*)/([0-9])]
</code>
Nach dem Login kopieren
Nach dem Login kopieren

类似于上面这个错误的正则思路。 该如何写?

你这样两个字符串差别已经很大了,就没有必要压缩到一个正则里了,直接分成两次正则判断更为妥当。

正则里没有根据条件来选择匹配规则的定义,像你这种情况用的还是 | 进行或匹配而已。其效果和使用两次正则没什么区别。

最暴力的解决方案:用“或”(|

优雅一些的方案:提取两个要匹配字符串的公有特点,写新的正则表达式兼容

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage