当前位置: 代码迷 >> JavaScript >> 正则表达式应由8到20个数字字符组成,包括空格和一个连字符,并且连字符不能为第一个或最后一个字符
  详细解决方案

正则表达式应由8到20个数字字符组成,包括空格和一个连字符,并且连字符不能为第一个或最后一个字符

热度:63   发布时间:2023-06-07 11:45:59.0

我正在尝试为上述规则编写正则表达式,我尝试过这种方式但不起作用

"(?=^([0-9]|-){8,20}$)^[0-9]+[/-/][0-9]+$"

因此,通过创建一个正则表达式来测试一个字符串是否由8到20个字符(数字,空格或连字符)组成,其中连字符不能为第一个或最后一个字符,可以使问题更简单。

/^[\d\s][\d\s\-]{6,18}[\d\s]$/

然后测试该字符串是否包含单个连字符:

/^[^\-]*\-[^\-]*$/

然后它包含一个空格:

/\s/

我很欣赏这与您要求的答案略有不同,但认为可能会有所帮助

我认为仅使用一个正则表达式就无法检查字符串的长度和格式。 但是,您可以通过两个步骤来实现此目的,例如:

var formatRegex = /^\d+(?:\d|\s)*-(?:\d|\s)+$/;
var myText = '111-111 11 111';
if (formatRegex.test(myText)) {
  if (myText.length >= 8 && myText.length <= 20) {
    console.log('ok');
  }
}
^[0-9](?:([0-9]{5,17}-)|(?=[0-9]*[-][0-9]*$)[0-9-]{6,18})[0-9]$

此正则表达式是有效的说明:它将检查以[0-9]开头并以[0-9]结尾的字符串,以获取剩余长度的字符串,我们可以使用此模式(?:[0-9] {5,17} | (?= [0-9] [-] [0-9] $)[0-9-] {6,18}),其中?:([0-9] {5,17}-)将检查是否存在5至17个数字和一个-字符串演示: :