正则表达式适用于 Chrome 和 Firefox 浏览器,但不适用于 safari
The regular expression works with Chrome and Firefox browsers but not on safari
这是正则表达式。
/^[a-zA-Z]+(?!.*?\.\.)(?!.*?\-\-)[a-zA-Z0-9.-]*(?<!\.)(?<!\-)$/
它适用于 Chrome 和 Firefox 浏览器,但在 Safari 浏览器上失败并出现错误:
Invalid regular expression:invalid group specifier name
首先,您应该了解正则表达式模式的作用(或匹配)。
^
- 字符串开头
[a-zA-Z]+
- 一个或多个字母
(?!.*?\.\.)
- 除了换行符之外的任何零个或多个字符后不允许有两个连续的点
(?!.*?\-\-)
- 任何零个或多个字符后不允许有两个连续的点,换行字符尽可能少
[a-zA-Z0-9.-]*
- 零个或多个字母、数字、.
或 -
(?<!\.)(?<!\-)$
- 字符串的结尾,左边没有 .
也没有 -
。
因此,您要匹配的是以字母开头,然后包含字母数字字符与点或连字符“交错”的字符串,但 --
和 ..
是禁止的。
没有后视的相同模式看起来像
/^[a-zA-Z](?!.*?\.\.)(?!.*?--)(?!.*[.-]$)[a-zA-Z0-9.-]*$/
这里,(?!.*[.-]$)
要求如果有.
or
-at the end of the string. You should also emove the first
+`匹配失败,不需要的时候允许回溯。
注意 上面的模式允许在字符串中使用 .-
和 -.
。如果您不想这样做,只需使用无环视模式,
/^[a-z]+(?:[-.][a-z0-9]+)*$/i
^[a-z]+(?:[-.][a-z0-9]+)*$
模式匹配
^
- 字符串开头
[a-z]+
- 一个或多个字母(使用 /i
标志启用不区分大小写的匹配)
(?:[-.][a-z0-9]+)*
- -
或 .
出现零次或多次,然后出现一次或多次 letters/digits
$
- 字符串结尾。
这是正则表达式。
/^[a-zA-Z]+(?!.*?\.\.)(?!.*?\-\-)[a-zA-Z0-9.-]*(?<!\.)(?<!\-)$/
它适用于 Chrome 和 Firefox 浏览器,但在 Safari 浏览器上失败并出现错误:
Invalid regular expression:invalid group specifier name
首先,您应该了解正则表达式模式的作用(或匹配)。
^
- 字符串开头[a-zA-Z]+
- 一个或多个字母(?!.*?\.\.)
- 除了换行符之外的任何零个或多个字符后不允许有两个连续的点(?!.*?\-\-)
- 任何零个或多个字符后不允许有两个连续的点,换行字符尽可能少[a-zA-Z0-9.-]*
- 零个或多个字母、数字、.
或-
(?<!\.)(?<!\-)$
- 字符串的结尾,左边没有.
也没有-
。
因此,您要匹配的是以字母开头,然后包含字母数字字符与点或连字符“交错”的字符串,但 --
和 ..
是禁止的。
没有后视的相同模式看起来像
/^[a-zA-Z](?!.*?\.\.)(?!.*?--)(?!.*[.-]$)[a-zA-Z0-9.-]*$/
这里,(?!.*[.-]$)
要求如果有.
or
-at the end of the string. You should also emove the first
+`匹配失败,不需要的时候允许回溯。
注意 上面的模式允许在字符串中使用 .-
和 -.
。如果您不想这样做,只需使用无环视模式,
/^[a-z]+(?:[-.][a-z0-9]+)*$/i
^[a-z]+(?:[-.][a-z0-9]+)*$
模式匹配
^
- 字符串开头[a-z]+
- 一个或多个字母(使用/i
标志启用不区分大小写的匹配)(?:[-.][a-z0-9]+)*
--
或.
出现零次或多次,然后出现一次或多次 letters/digits$
- 字符串结尾。