正则表达式必须以字母或数字开头,字符串只能包含字母,数字或斜杠,不能有双斜杠

Jak*_*.JS 6 regex

我想检查一些字符串.这是参数.

  1. 字符串必须以字母或数字开头
  2. 字符串只能包含字母,数字或斜杠
  3. 字符串不能有双斜杠(例如:"api // go")

好字符串:

go
go2/api/hello
go/api45
Run Code Online (Sandbox Code Playgroud)

坏字符串:

/go        (can't begin with a slash)
go//api    (can't have a double slash)
go/api%    (can't contain non number, letter or slash)
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用RegExr.com,但无济于事.我一直在尝试这个表达式:

^[^\/](([0-9A-Za-z])+(\/)?)+
Run Code Online (Sandbox Code Playgroud)

但它不太有效.

Bra*_*ldt 6

干得好:

^[0-9a-z](\/?[0-9a-z])*\/?$
Run Code Online (Sandbox Code Playgroud)

需要/i当前形式的(不区分大小写的修饰符)。这非常简单,不需要前瞻。

解释:

^         Starts with
[0-9a-z]  1 Alphanumeric character
(         Start a repeatable group
\/?       Optional /
[0-9a-z]  1 Alphanumeric character
)*        Repeat the group zero or more times
\/?       Allow for an ending slash
$         String must end
Run Code Online (Sandbox Code Playgroud)


Dav*_*ber 5

您可以尝试这样的操作(我希望您使用的任何口味都可以超前!):

^(?!.*\/\/)[A-Za-z0-9][A-Za-z0-9\/]*$
Run Code Online (Sandbox Code Playgroud)

有关完整的描述和测试字符串,请参见Regex 101 Demo

  • @LucasTrzesniewski,您可以通过单击左侧的分隔符来将定界符更改为其他名称,以避免转义斜杠:https://regex101.com/r/gP2gD2/3 (2认同)