JS正则表达式混乱

时间:2011-03-30 11:02:25

标签: javascript regex substring

首先道歉是有点朦胧。我需要创建一个测试来检查输入字段的值是否为。

我目前使用/[^A-Za-z0-9 ]/.test(document.form.Serial.value)进行测试,以查看Serial的值是否仅为字母数字。

现在,如果设置了一个附加字段,Serial必须是'i'或'I',那么剩下的字符必须都是数字。我曾经考虑过用子串做这个,但看起来有点长且不必要。

非常感谢人们给予的任何建议!

3 个答案:

答案 0 :(得分:3)

如果你想测试字符串是以i还是I开头,然后只包含数字,你可以使用正则表达式,例如:

/^[iI][0-9]+$/

或者,对于不区分大小写的匹配:

/^i[0-9]+$/i


基本上,这将匹配:

  • 字符串的开头:^
  • i
  • 0到9之间的任何字符:[0-9]
    • 一次或多次:[0-9]+
  • 字符串结尾:$

答案 1 :(得分:2)

您可以尝试以下代码

var test_value = false
if (document.form.Additional_Field.value) {
   test_value = /^(i|I)[0-9]+/.test(document.form.Serial.value) }
else {
    test_value = /[A-Za-z0-9]+/.test(document.form.Serial.value) }
如果序列是字母数字或 Additional_Field 的值为true,

将导致 test_value 设置为 true 并且序列 i I 开头,任意数量的数字, test_value 设置为 false 否则。

答案 2 :(得分:0)

为什么不打破这个问题。您有两个有效输入,因此用于语法检查输入的模式将是:

/^([iI][0-9]+)|([A-Za-z0-9]+)$/

然后,您有一个单独的,更简单的问题,即根据表单上其他控件的状态确定验证的输入是否合适。

相关问题