Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于接受任意数量的字符和-_Javascript_Regex - Fatal编程技术网

Javascript 用于接受任意数量的字符和-

Javascript 用于接受任意数量的字符和-,javascript,regex,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等字符相关联您

有人能给我一个正确的正则表达式来接受以字符开头,以字符结尾的名称吗- 例: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等字符相关联

您可以在内部使用
*
来允许除换行符以外的任意数量的字符:

var regex = /^(?!.*--.*$)[A-Za-z].*[A-Za-z]$/
(?!.*-.*$)
将确保不允许使用双连字符

请检查一下电话号码

功能有效性(str)
{
变量re=/^(?。*?--.*?$)[A-Za-z].[A-Za-z]$/g;
如果((m=re.exec(str))!==null)
返回true;
其他的
返回false;
}
document.getElementById(“res”).innerHTML='RTT--rrtr:'+ValIt('RTT--rrtr')+“
ER#$-wrwrwr:“+ValIt('ER#$-wrwrwrwr')+”
Rfff-ff-d:+ValIt('Rfff-ff-d')
这个简单的正则表达式将为您完成它。请参阅演示


我相信这就是你想要的:

  /^[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

它不应该像ABC--EFG那样允许多个连字符连在一起,它应该像这个ABC-EFG-hij-esd一样重复。此外,它只能包含没有任何连字符(如ABC)的字符。可选连字符应为optional@Rajesh:你现在能查一下代码吗?如果您在否定的“向前看”中使用
--
,则只允许连续连字符。@Rajesh此问题不需要向前看。只需简单操作即可。
Lookaheads
费用高昂此匹配也
“AB--CD”
感谢您的解释。。。帮助我更好地理解
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
  /^[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