sub:模式,允许在2个字母数字之间的可选连字符,并且也限制了空格。没有其他特殊字符
我需要一个正则表达式来匹配以下测试用例:-
“全欠”“ allowe d”“ a-llo-wed-12”“ allowed12”“ allow-12ed” “ allowed-12”“ allo-wed-12”
“不允许”“不允许”“不允许”“不允许” “不允许-允许”“禁止@允许”
尝试的模式:
^[^-]*-?[^-]*$
^\\w+(-\\w+)*$
javascript regex for special characters
Java regex - alphanumeric, at most one hyphen, period or underscore, seven characters long
PHP regex to match alphanumeric and hyphens (not spaces) for use as subdomain
还有更多
请发布重复的问题链接。我们可能会从那里提供的解决方案中学习并改善搜索范围
答案 0 :(得分:1)
您的第二个正则表达式^\w+(-\w+)*$
将与您的情况匹配,但是\w
也将与下划线匹配。
也许您正在寻找一种模式,该模式与字母数字[a-z0-9]+
匹配一次或多次,然后重复与破折号匹配,然后与字母数字(?:-[a-z0-9]+)*
匹配一次或多次
请注意,这仅匹配小写字符。您可以使用不区分大小写的标志来匹配大写和小写字符。
const strings = [
"all-owed",
"allowe-d",
"a-llo-wed-12",
"allowed12",
"allow-12ed",
"allowed-12",
"allo-wed-12",
"notallo-wed-12_",
"not allowed",
"not allowed ",
" notallowed",
" nota-llowed",
"not--allowed",
"not@allowed"
];
let pattern = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
strings.forEach((s) => {
console.log(s + " ==> " + pattern.test(s));
});
答案 1 :(得分:0)