我试图编写一个正则表达式来匹配有效的 ssh 连接字符串,但没有成功。

我真的只需要识别格式的字符串:

  • 用户@主机名:/一些/路径

但最好也匹配一个隐式主目录:

  • 用户@主机名:

到目前为止,我已经想出了这个正则表达式:

/^[:alnum:]+\@\:(\/[:alnum:]+)*$/ 

它没有按预期工作。

在我的大脑爆炸并且我开始用噪音说话之前欢迎任何建议 :)

请您参考如下方法:

您提供的正则表达式没有主机名部分。尝试:

/^[:alnum:]+\@[:alnum:\.]\:(\/[:alnum:]+)*$/ 

或

/^[A-Za-z][A-Za-z0-9_]*\@[A-Za-z][A-Za-z0-9_\.]*\:(\/[A-Za-z][A-Za-z0-9_]*)*$/ 

因为我不相信没有双括号的 alnum。

此外,:alnum: 可能无法为您的部分提供所需的范围。你可以有 ”。”主机名中的字符,并且可能还需要允许使用“_”字符。我很少看到用户名或主机名以非字母开头。

作为旁注,我尽量避免使用增强型正则表达式,因为它们并非在所有正则表达式引擎上运行(我使用 UNIX 已有很长时间)。不幸的是,这使我的正则表达式笨拙(见上文)并且不太国际化。对此深表歉意。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!