如何用JavaScript和PHP正则验证Apple Bundle Identifier或Apple App ID
解决Apple App ID/Bundle Identifier正则匹配失效问题
嘿,我看到你在匹配Apple App ID的时候遇到了正则失效的问题,咱们来快速定位并解决它~
问题根源:正则表达式的语法错误
你写的正则/id\[0-9]+/里犯了一个小错误:不必要地转义了方括号[,导致正则会去匹配字面量的[字符,而不是定义数字字符组。另外,没有加上字符串锚点^和$的话,可能会误匹配到包含idxxx的无效字符串(比如myappid123)。
修正后的Apple App ID正则(JavaScript)
正确的正则应该匹配以id开头,后面紧跟一个或多个数字,且整个字符串就是App ID,代码如下:
var ios_prop = "id1234567"; // ^ 匹配字符串开头,$ 匹配字符串结尾,确保全匹配 const regexp = /^id\d+$/; if (regexp.test(ios_prop)) { alert("This is a valid Apple ID"); } else { alert("Invalid App..."); }
^id:强制字符串以id开头\d+:匹配一个或多个数字(等价于[0-9]+)$:强制字符串以数字结尾,避免部分匹配
额外补充:Apple Bundle Identifier的正则匹配
你提到还需要匹配Bundle Identifier,它的格式是反向域名(比如com.apple.mail),对应的正则和代码示例如下:
var bundle_id = "com.apple.mail"; const bundleRegex = /^[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+$/; if (bundleRegex.test(bundle_id)) { alert("This is a valid Bundle Identifier"); } else { alert("Invalid Bundle Identifier..."); }
^[a-zA-Z0-9]+:开头是至少一个字母或数字(\.[a-zA-Z0-9]+)+:后面跟着至少一组「点+字母/数字」的组合
PHP版本的对应实现
如果你需要在PHP中实现同样的匹配,代码如下:
匹配Apple App ID
$iosProp = "id1234567"; $pattern = '/^id\d+$/'; if (preg_match($pattern, $iosProp)) { echo "This is a valid Apple ID"; } else { echo "Invalid App..."; }
匹配Apple Bundle Identifier
$bundleId = "com.apple.mail"; $pattern = '/^[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+$/'; if (preg_match($pattern, $bundleId)) { echo "This is a valid Bundle Identifier"; } else { echo "Invalid Bundle Identifier..."; }
内容的提问来源于stack exchange,提问作者Shasha
相关产品推荐
相关产品推荐

