javascript - 接受任意数量字符的正则表达式和 -

标签 javascript regex

任何人都可以给我正确的正则表达式来接受以字符开头和以字符结尾的名称,在中间我可以允许 - 例如:ABC 或 ABC-DEF 或 ABC-DEF-GHI 但它不应该以 - 开头或结尾 例如:-ABC 或 -ABC- 或 ABC-

这是我的正则表达式:

var regex = /^[A-Za-z]-?[A-Za-z]*-?([A-Za-z]+)+$/ 

这对我来说效果很好,但如果假设我想将名称命名为 AB-CD-EF-GH,那么这将不起作用。 注意:请记住,名称应以字符开头并以字符结尾,中间可以有两次,但不能两次。它必须与像 a-b-c-d 这样的字符相关联

最佳答案

^[A-Za-z]+(?:-[A-Za-z]+)*$

这个简单的正则表达式将为您完成。查看演示。

https://regex101.com/r/sJ9gM7/55

var re = /^[A-Za-z]+(?:-[A-Za-z]+)*$/gim;
var str = 'ABC\nABC-DEF\n-ABC\nABC-\nAB-CD-EF-GH\n';
var m;

if ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}

关于javascript - 接受任意数量字符的正则表达式和 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29487793/

相关文章:

javascript - 如何在 jQuery/Javascript 中编写 switch 语句来测试元素是否具有特定类?

javascript - 如何在 IIS Express 中引用上一级 JavaScript 文件?

c# - C# 中的正则表达式查找类似 "x-[some_string]"的匹配项

regex - 使用 sed/perl 式正则表达式或 awk 展平嵌套列表模式

regex - 奇怪的 sed 输出

javascript - 如何在docx文件nodejs的第一页附加图像?

javascript - 如何在父 div 的中间重叠两个位置相对的 flexbox 子项?

javascript - 如何在 Meteor 中自动更新字段?

php - 如何识别重复分隔符之间的标记?

regex - 从日志文件中提取数据的 Shell 程序