javascript - 允许在 2 个字母数字之间使用可选连字符并限制空格的模式

标签 javascript regex

sub:允许在 2 个字母数字之间使用可选连字符并限制空格的模式。没有其他特殊字符

我需要一个正则表达式来匹配以下测试用例:-

"all-owed" "allowe-d" "a-llo-wed-12" "allowed12" "allow-12ed" "allowed-12" "allo-wed-12"

"not allowed" "not allowed " " notallowed" " nota-llowed" "not--allowed" "not@allowed"

尝试过的模式:

^[^-]*-?[^-]*$
^\\w+(-\\w+)*$

Regex to text a string which will have only numbers and an optional hyphen. Hyphen can be at any position after character 2

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

还有更多

请发布重复的问题链接。我们可以从那里提供的解决方案中学习并改进我们的搜索

最佳答案

你的第二个正则表达式 ^\w+(-\w+)*$会匹配您的大小写,但 \w 也会匹配下划线。

也许您正在寻找一种与字母数字 [a-z0-9]+ 匹配一次或多次的模式,然后重复匹配破折号,后跟与字母数字 匹配一次或多次>(?:-[a-z0-9]+)*

请注意,这仅匹配小写字符。您可以使用不区分大小写的标志来匹配大写和小写字符。

^[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));
});

关于javascript - 允许在 2 个字母数字之间使用可选连字符并限制空格的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51063724/

相关文章:

javascript - jQuery 上下文选择器差异

javascript - 如何将递增的 for 循环变量传递给 Node.js 中的函数?

正则表达式显示从倒数第二次出现的字符开始的字符串

ruby - 在 ruby​​ 中使用正则表达式计算字符串中数字和字符的长度

python - 为什么我的 re.search 命令不起作用?

javascript - 在点后添加空格但不在 URL 中添加空格

Javascript/Node : Array empty after pushing values in forEach loop

javascript - 检测用户是否在域上启用了位置服务

javascript - 在 D3.js 中为多个小条形图下的轴绘制单独的域

javascript - 带有可选国家代码的电话号码的正则表达式