我一直在尝试匹配Google+帐户URI的用户ID或自定义部分。我正在使用GAS(Google脚本引擎),并加载了XRegExp来帮助匹配Unicode字符。
到目前为止,我有这个:
我已经尝试在
这个正则表达式甚至可以匹配URL末尾是"/about"或者"/posts"。但是,它仍然无法匹配UNICODE。=(我正在努力解决这个问题。
更新#4:所以这似乎有效:
到目前为止,我有这个:
((https?://)?(plus\.)?google\.com/)?(.*/)?([a-zA-Z0-9._]*)($|\?.*)
,你可以看到正则表达式测试(外部网站)仍然无法正确匹配部分内容。我已经尝试在
[a-zA-Z0-9._]
中使用\p{L}
,但没有成功。另外,当匹配成功时,我最终会多出一个斜杠在个人资料名称的末尾。
更新 #1: 我正在尝试修复从Google表单复制的电子表格中的一些G+ URL。这些链接并不完全相同,最简单的个人资料链接是 "https://plus.google.com/" + 用户ID或vanity名称。
更新 #2: 到目前为止,我使用了 @demrks 简化版 @guest271314 的响应 ([+]\w+|[0-9]{21})(?:\/)?(?:\w+)?$
。然而,存在两个问题:
1) Google Vanity URLs 可以包含Unicode字符。例如:https://plus.google.com/u/0/+JoseManuelGarcía_ertatto
会失败。我已经尝试使用 \p{L} 但似乎无法正确使用。
2) GAS 似乎不喜欢它,即使在此站点上 正则表达式测试 也可以工作。 =(
更新 #3: 似乎GAS不喜欢使用\w
,所以我不得不扩展它。因此,到目前为止我有:
/([+][A-Za-z0-9-_]+|[0-9]{21})(?:\/)?(?:[A-Za-z0-9-_]+)?$/
这个正则表达式甚至可以匹配URL末尾是"/about"或者"/posts"。但是,它仍然无法匹配UNICODE。=(我正在努力解决这个问题。
更新#4:所以这似乎有效:
/([+][\\w-_\\p{L}]+|[\\d]{21})(?:\/)?(?:[\\w-_]+)?$/
看起来我需要在字符类内部使用双反斜杠。目前这似乎可以工作。不确定是否有更短的方法来使用它。