我需要为路径创建reg-ex,如aaaa / bbb / ccc或aaa-bbb或aaa_bbb_ccc_ddd等 我该怎么办? 它只能包含带<连字符下划线和斜杠的字母数字。 我尝试过这样的东西不能正常工作
@"^((?:/[a-zA-Z0-9]+)+/?|/?(?:[a-zA-Z0-9]+/)+)[a-zA-Z0-9]*$"
答案 0 :(得分:1)
如果你不介意你的路径是否有aaa-bbb/ccc
这样的混合分隔符,那么你可以通过以下方式轻松完成:
"^(?:[A-z0-9]+[-_\/]?)*$"
这将接受aaa-bbb/ccc
和aaa/
但拒绝aaa--bbb
。如果您想确保只有一种类型的分隔符,那么我们可以为每个分隔符类型创建一个重复的块:
"^(?:(?:[A-z0-9]+-?)*|(?:[A-z0-9]+_?)*|(?:[A-z0-9]+\/?)*)$"
这仍然会容忍尾随分隔符,你可以通过在末尾添加另一个组来摆脱它:
"^(?:(?:[A-z0-9]+-?)*|(?:[A-z0-9]+_?)*|(?:[A-z0-9]+\/?)*)[A-z0-9]+$"
如果您想要允许前导分隔符,只需在组前移动它们即可。另请注意额外的\s*
以允许尾随空格。
"^(?:(?:-?[A-z0-9]+)*|(?:_?[A-z0-9]+)*|(?:\/?[A-z0-9]+?)*)\s*$"
眼睛不容易,但它确实有效(至少在perl中)。
答案 1 :(得分:1)
尝试这个匹配单词
\b[a-zA-Z0-9]*[-/_]+[a-zA-Z0-9]+\b
注意:
\w
还包含下划线,说明我使用[a-zA-Z0-9]
\b
模式阐述:
\w A word character: [a-zA-Z_0-9]
\b A word boundary
[abc] a, b, or c (simple class)