试图找出一个正则表达式来验证网络路径,即:''comp'xyz
或''comp
或''comp'x'y'z'storage
或所有部分都更长的东西,但希望传达它的要点。
目前拥有的是一个简单的输入字段,我有一个用户传递信息。问题是我不希望他们把它放错,因为后端连接到使用它在网络上的计算机上运行进程的客户端,所以我最不需要的是有人打错了某些东西并成为其他东西的原因破坏。所以我认为一个快速preg_match可以很好地从我目前正在使用的 PHP 方面确认这一点,但我确实需要将其工作到 JavaScript 和一个基于 Ruby 构建的层中,所以我不知道是否所有正则表达式都是相等的,我需要一个适用于所有级别的正则表达式。
同样为了节省我以后回来的时间,我最终需要找出一个正则表达式,允许用户执行本地路径,即:C:'
、X:
、H:'path'to'folder
或前面提到的网络路径。
''comp'x'y'z'storage
:
/^''(''[^'s'']+)+('')?$/
H:'path'to'folder
:
/^([A-Za-z]:('')?|[A-Za-z]:(''[^'s'']+)+)('')?$/
Both
:
/^(''(''[^'s'']+)+|([A-Za-z]:('')?|[A-z]:(''[^'s'']+)+))('')?$/
工作演示:http://jsfiddle.net/DerekL/gLfdv/
这似乎对我有用:
([A-Z]:|'')(''[a-z0-9]+)*
如果您有任何问题(不受欢迎或额外需要的)匹配,请告诉我
要验证整个字段,请使用:
^([A-Z]:|'')(''[a-z0-9]+)*$
编辑 需要一个小的修订来匹配您的所有建议(我的坏):
^([A-Z]:|'')(''$|''[a-z0-9]+)*$
对于第一个,我有:
^''(''[a-zA-Z_]'w*)+$
第二个:
^[a-zA-Z]:(''([a-zA-Z_]'w*)*)*$
一般情况:
/^('''''w+)('''w+)$/g // matches ''comp, ''comp'xyz, ''comp'x'y'z'storage
具体案例:
/^([A-Z]:)(''|'''w+)*$/g // matches C:', X:, H:'path'to'folder
这将匹配以 IP 地址开头的 UNC 路径,并且可以处理文件/文件夹名称中的空格。还验证标准路径格式,例如 C:''用户''用户''某个人''文件.txt
/^((''''[a-zA-Z0-9-'.]+''[a-zA-Z0-9`~!@#$%^&(){}'._-]+([ ]+[a-zA-Z0-9`~!@#$%^&(){}'._-]+)*)|([a-zA-Z]:))(''[^ ''/:*?""<>|]+([ ]+[^ ''/:*?""<>|]+)*)*''?$/
我修改了答案:用于匹配 UNC 路径的 PHP 正则表达式
和:http://regexlib.com/REDetails.aspx?regexp_id=2285&AspxAutoDetectCookieSupport=1
在 https://jsfiddle.net/megamania/q5ncy7t6/看到它的实际效果