自定义 Javascript 正则表达式 - 无法使其工作
Custom Javascript Regex - Cannot make it work
我需要接受以下内容:
- x{1}.xxxxx{1,40}
- x{1}.xxxxx{1,40}-xxxxx{1,40}
- xxxxx{1,40}
- xxxxx{1,40}-xxxxx{1,40}
- xxxx xxxxx xxxxx{space之间的单词}
我的正则表达式不工作...
/^([a-z]{1}\.[a-z]{1,40}|[a-z]{1}\.[a-z]{1,40}\-[a-z]{1,40}|[a-z\s]{1,})$/i
同时
/^([a-z]{1}\.[a-z]{1,40}|[a-z]{1}\.[a-z]{1,40}\-[a-z]{1,40})$/i
单独工作正常并且
/^([a-z\s]{1,})$/i
工作正常...
我做错了什么?
提前谢谢你...
您可以将模式写为:
^(?:(?:[a-z]\.)?[a-z]{1,40}(?:-[a-z]{1,40})?|[a-z]+(?:\s+[a-z]+)+)$
^
字符串开头
(?:
非捕获组
(?:[a-z]\.)?
匹配一个可选的字符 a-z 和一个点
[a-z]{1,40}
匹配 1-40 个字符
(?:-[a-z]{1,40})?
匹配连字符和 1-40 个字符的可选部分
|
或
[a-z]+(?:\s+[a-z]+)+
匹配 2 个或更多单词,它们之间有空格
)
关闭非捕获组
$
字符串结束
看到一个regex101 demo。
您可以尝试使用以下正则表达式:
^(([a-z]\.)?[a-z]{1,40}(-[a-z]{1,40})?|[a-z]+( [a-z]+)+)$
此解决方案使用两种模式:
- 第一个匹配您的前四个样本:
- 可选第一组:
[a-z]{1}\.
- 强制第二组:
[a-z]{1,40}
- 可选第三组:
-[a-z]{1,40}
- 第二个与您的最后一个样本匹配:
- 由字符分隔的单词:
[a-z]+( [a-z]+)+)
这些组将单独突出显示。
详细说明:
^
: 字符串开始
([a-z]\.)?
:一个字母字符+点(可选组)
[a-z]{1,40}
:1 到 40 个字母字符
(-[a-z]{1,40})?
:破折号 + 1 到 40 个字母字符(可选组)
[a-z]+
: 字母字符组合
( [a-z]+)+
:多个
$
: 字符串结束
试试看 here.
我需要接受以下内容:
- x{1}.xxxxx{1,40}
- x{1}.xxxxx{1,40}-xxxxx{1,40}
- xxxxx{1,40}
- xxxxx{1,40}-xxxxx{1,40}
- xxxx xxxxx xxxxx{space之间的单词}
我的正则表达式不工作...
/^([a-z]{1}\.[a-z]{1,40}|[a-z]{1}\.[a-z]{1,40}\-[a-z]{1,40}|[a-z\s]{1,})$/i
同时
/^([a-z]{1}\.[a-z]{1,40}|[a-z]{1}\.[a-z]{1,40}\-[a-z]{1,40})$/i
单独工作正常并且
/^([a-z\s]{1,})$/i
工作正常...
我做错了什么? 提前谢谢你...
您可以将模式写为:
^(?:(?:[a-z]\.)?[a-z]{1,40}(?:-[a-z]{1,40})?|[a-z]+(?:\s+[a-z]+)+)$
^
字符串开头(?:
非捕获组(?:[a-z]\.)?
匹配一个可选的字符 a-z 和一个点[a-z]{1,40}
匹配 1-40 个字符(?:-[a-z]{1,40})?
匹配连字符和 1-40 个字符的可选部分|
或[a-z]+(?:\s+[a-z]+)+
匹配 2 个或更多单词,它们之间有空格
)
关闭非捕获组$
字符串结束
看到一个regex101 demo。
您可以尝试使用以下正则表达式:
^(([a-z]\.)?[a-z]{1,40}(-[a-z]{1,40})?|[a-z]+( [a-z]+)+)$
此解决方案使用两种模式:
- 第一个匹配您的前四个样本:
- 可选第一组:
[a-z]{1}\.
- 强制第二组:
[a-z]{1,40}
- 可选第三组:
-[a-z]{1,40}
- 可选第一组:
- 第二个与您的最后一个样本匹配:
- 由字符分隔的单词:
[a-z]+( [a-z]+)+)
- 由字符分隔的单词:
这些组将单独突出显示。
详细说明:
^
: 字符串开始([a-z]\.)?
:一个字母字符+点(可选组)[a-z]{1,40}
:1 到 40 个字母字符(-[a-z]{1,40})?
:破折号 + 1 到 40 个字母字符(可选组)[a-z]+
: 字母字符组合( [a-z]+)+
:多个$
: 字符串结束
试试看 here.