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

时间:2015-04-07 09:06:35

标签: 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命名,那么这不起作用。 注意:请记住,Name应该以Characters开头,End以字符开头,中间我可以 - 但不是 - 两次。它必须与a-b-c-d

等字符相关联

4 个答案:

答案 0 :(得分:1)

^[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.
}

答案 1 :(得分:1)

我相信这就是你想要的:

  /^[A-Z](-[A-Z]+)*[A-Z]$/i

分析:

  /^       Start of string
  [A-Z]    Any alphabetic character
  (        Group
    -        A hyphen character
    [A-Z]+   One or more alphabetic characters
  )*       0 or more repititons of group
  [A-Z]    Any alphabetic character
  $/i      End of string, allow upper or lower case alpha

答案 2 :(得分:0)

您可以在里面使用.*允许除换行符之外的任意数量的任何字符:

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

(?!.*--.*$)将确保不允许使用双连字符。

请查看regex demo here

function ValIt(str) 
{
   var re = /^(?!.*?--.*?$)[A-Za-z].*[A-Za-z]$/g; 
   if ((m = re.exec(str)) !== null) 
       return true;
     else
       return false;
}

document.getElementById("res").innerHTML = 'RTT--rrtr: ' + ValIt('RTT--rrtr') + "<br>ER#$-wrwr: "+ ValIt('ER#$-wrwr') + "<br>Rfff-ff-d: " + ValIt('Rfff-ff-d');
<div id=res />

答案 3 :(得分:0)

var rgx = /^[A-Za-z]+(-[A-Za-z]+)*$/;

rgx.test("ABC"); // true
rgx.test("ABC-DEF"); // true
rgx.test("AB-CD-EF-GH"); // true
rgx.test("-AB-CD-EF-GH"); // false
rgx.test("AB-CD-"); // false
rgx.test("AB--CD"); // false