0

我正在创建简单的表单验证,排除任何包含字母的条目(基本上来自 az 或 AZ 的任何条目)。

这是我目前正在使用的,但我的脚本只拒绝任何不是 0-9 的东西。这将拒绝我要验证的句点、括号和破折号。

var numericReg = /^\d*[0-9](|.\d*[0-9]|,\d*[0-9])?$/;
    if(number != "" && !numericReg.test(number)) {
    return false;

我怎样才能只检查字母?

另一种方法是只接受具有数字 0-9 和以下字符的输入:“.”、“-”、“(”、“)”

4

2 回答 2

5

两个正则表达式供您尝试。第一个匹配只包含您指定的字符的字符串。第二个匹配不包含字母 az 或 AZ 的字符串:

var isPhoneChar = /^[-.() \d]+$/;
var isNonAlpha = /^[^a-z]+$/i;

请记住,isNonAlpha不会防止 ñüṃȅɍǒǘṩ ȯẗḥḛṝ ḽëʈťĕřś‼</p>

您也可以考虑允许x电话分机和+国际拨号。

于 2012-10-02T00:54:10.380 回答
1

您可以随时使用它来直接拉出号码。

咖啡脚本:

console.log number.match ///

  # Match the start of the string.
  ^

  # Get the first 3 digits.
  \(?(?=\d{3})(\d{3})[).\-\s]*

  # Get the next 3 digits.
  (\d{3})[.\-\s]*

  # Get the last 4 digits
  (\d{4})

  # End of the number
  $

///

Javascript(或节点):

console.log(number.match(/^\(?(?=\d{3})(\d{3})[).\-\s]*(\d{3})[.\-\s]*(\d{4})$/));

以下是我在 CoffeeScript 中运行的测试用例,以确保它有效:

exports '1234567890'
exports '123 456 7890'

exports '123.456.7890'
exports '123 456.7890'
exports '123.456 7890'
exports '123456.7890'
exports '123.4567890'
exports '123456. 7890'

exports '123-456-7890'
exports '123 456-7890'
exports '123-456 7890'
exports '123456-7890'
exports '123-4567890'

exports '(123)456-7890'
exports '(123)4567890'
exports '(123) 4567890'
exports '(123)456 7890'
exports '(123) 456 7890'
exports '(123) 4567890'

他们的输出:

1234567890
[ '1234567890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '1234567890' ]
123 456 7890
[ '123 456 7890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '123 456 7890' ]
123.456.7890
[ '123.456.7890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '123.456.7890' ]
123 456.7890
[ '123 456.7890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '123 456.7890' ]
123.456 7890
[ '123.456 7890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '123.456 7890' ]
123456.7890
[ '123456.7890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '123456.7890' ]
123.4567890
[ '123.4567890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '123.4567890' ]
123456. 7890
[ '123456. 7890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '123456. 7890' ]
123-456-7890
[ '123-456-7890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '123-456-7890' ]
123 456-7890
[ '123 456-7890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '123 456-7890' ]
123-456 7890
[ '123-456 7890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '123-456 7890' ]
123456-7890
[ '123456-7890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '123456-7890' ]
123-4567890
[ '123-4567890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '123-4567890' ]
(123)456-7890
[ '(123)456-7890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '(123)456-7890' ]
(123)4567890
[ '(123)4567890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '(123)4567890' ]
(123) 4567890
[ '(123) 4567890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '(123) 4567890' ]
(123)456 7890
[ '(123)456 7890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '(123)456 7890' ]
(123) 456 7890
[ '(123) 456 7890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '(123) 456 7890' ]
(123) 4567890
[ '(123) 4567890',
  '123',
  '456',
  '7890',
  index: 0,
  input: '(123) 4567890' ]

如果number.match返回null该代码,则它不是有效数字。所以这是一种简单的检查方法,然后已经解析了数字。

如果您想允许a-z,只需将所有\d条目更改为[\d\w]. (见此

于 2012-10-02T01:18:24.017 回答