-4

我想在 JavaScript 中做一个正则表达式模式,它只允许一个带有数字的字符串和这个符号:()+ 和一个空格。长度为 5-16 个字符。

请注意:字符串中字符的顺序并不重要。

什么是正确的模式?

谢谢

4

2 回答 2

4

这个怎么样:

/^[0-9 ()+]{5,16}$/

自己构建它很容易。) 首先,当你施加严格的限制时,你应该检查整个字符串,所以正则表达式应该被包装到/^...$/.

其次,如果你只需要一些特定的字符,你应该使用字符类:将它们全部写成 [...] 形式。在您的情况下,您可以使用快捷方式:替换/^[0123456789 ()+]$/为 just /^[0-9 ()+]$/

最后,用 {$min, $max} 形式陈述一些定量限制:在你的情况下,这将是{5,16}. 把它和你到目前为止得到的东西混合在一起——瞧!你解决了任务。)

于 2012-04-27T19:53:28.293 回答
1
if( myText.match(/\A[0-9 ()+]{5,16}\Z/) ) {
    // Yay!
}

虽然正确指出我缺少锚字符,但使用 ^$ 只会匹配字符串的,因此,“823479898237\n328742987”会匹配,尽管太长了。

于 2012-04-27T19:53:54.667 回答