javascript 正则表达式在 Android 2.3 股票浏览器中神秘地无法匹配

标签 javascript android regex

我在 javascript 中创建了一个简单的正则表达式来解析字符串并将句点之前的内容保存在字符串中。还有一个额外的限制,在句点之后必须是一个或多个大写字母字符:

var r=/([^.]*\.)[A-Z]+.*/gm
var col=r.exec(str)

现在我在大多数浏览器中使用此正则表达式没有问题:Firefox、Chrome 等。但是在较旧的浏览器(Android 2.3 的标准浏览器)上,我遇到了我不明白的神秘故障。

"a.A1"  <- does not match in Android 2.3 stock browser
"A.A1"  <- does match
"a.B2"  <- does not match in Android 2.3 stock browser
"A.B2"  <- does match
"a1.A1" <- does not match in Android 2.3 stock browser
"a1.B2" <- does match
"a1.C2" <- does not match in Android 2.3 stock browser

我无法解释这里发生了什么。如果我理解我的正则表达式,它应该匹配 0 个或多个不是句点的字符,然后是句点,这部分应该被捕获。然后它应该在句点之后继续匹配一个或多个大写字母字符,然后是零个或多个任何类型的字符。为什么这与上面的一些示例不匹配?

最佳答案

你能试试这个正则表达式吗:

var r = /([^.]*\.)[A-Z]+/;

您实际上并没有在这里使用 gm 标志,所以为什么还要使用它们。 m 用于在多行输入中使用 ^ 和 $g 用于全局。

有关在 Android 2.3.3 浏览器中使用全局开关的可能原因,另请参阅:https://github.com/f0r4y312/jquery-stylesheet/issues/4

关于javascript 正则表达式在 Android 2.3 股票浏览器中神秘地无法匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20250019/

相关文章:

JavaScript - 替换对象中的数组值

javascript - Masonry 在 IE 7 中不工作。SCRIPT5009 : 'Element' is undefined masonry. pkgd.min.js,第 9 行字符 6316

javascript - 页面 Load 、 onload 和 $(document).ready() 之间的区别

android - Eclipse 仍然以旧名称运行项目

javascript - 不匹配特定大小写的正则表达式

javascript - 按多维 id 数组求和

android - 在 twilio 中获取 channel 名称时出错。我在这里实现一对一聊天

android - 使用 android SAX 包 mathods 解析 Xml 以获取 android 中的属性值

c# - 如何访问正则表达式语句中的变量? C# 4.0

javascript - 试图找到漂亮网址的正则表达式