JavaScript使用正则表达式测试字母、数字、空格和破折号。

5

我用一个包含数字、字母和下划线的正则表达式进行javascript测试。我想将正则表达式更改为适用于字母、数字、空格和破折号的正则表达式。但是怎样更改呢?

re = /^\w+$/; 
if(!re.test(form.username.value)) { 
    alert("Username must contain only letters, numbers and underscores. Please try again"); 
    form.username.focus();
    return false; 
}
4个回答

13

这个怎么样?

/^[0-9A-Za-z\s\-]+$/

7
/^[\w\d\s-]+$/
  • ^ 表示从开头开始匹配
  • \w 匹配字母
  • \d 匹配数字
  • \s 匹配空格
  • 然后是 - (破折号)
  • 使用 [ ] 将字符包围起来,可以匹配其中的任何一个字符
  • $ 表示匹配到结尾

5

试试这个:

re = /^[a-zA-Z0-9-\s]*$/;
if(!re.test(form.username.value)) { 
    alert("Username must contain only letters, numbers and dashes. Please try again"); 
    form.username.focus();
    return false; 
}

^- 是的。你可以把 * 改成 +。当然,如果这是一个期望的功能,那就不用改了。 - Gary
我已经更新了正则表达式,因为问题中提到“用于匹配字母、数字、空格和短划线的正则表达式”... 没有提到下划线,并且正如你所说... 要强制匹配字符串,只需要将*更改为+。 - Goran.it
是的,我发帖后就注意到了问题。 - Gary

-1
  const reg = /^(?!.*\.\.)(?!.*\.$)[^\W][\w.\s\-']{2,200}$/gim;
  const regStatus = reg.test(value);
  return regStatus ? value : undefined;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接