1

我想为我的大学注册号做一个正则表达式。我成功率达到了 75%。我是新手,不知道怎么做。这就是我正在做的事情。

<!DOCTYPE html>
<html> 
<body>

<script>
str = "l1s10bscs"; //successfully tested
                   //but i want to append any 4 digits at the end of l1s10bscs

re = /[a-zA-Z]\d{1}[s|S|f|F]\d{2}[bscs]/g;

result = re.test(str);

document.write(result);

</script>

</body>
</html>

我试过了,但它不起作用。

re = /[a-zA-Z]\d{1}[s|S|f|F]\d{2}[bscs][0-9]{4}/g;  // this doesn't work 
4

3 回答 3

3
/[a-z]\d[sf]\d{2}bscs\d{4}/i

根据你的描述,应该是合适的。

我更改了以下内容:

  • [bscs] 表示“b or s or c or s”(所以“b or s or c”,多余的s是没有意义的)。您只需要文字四字符字符串“bscs”
  • \d{1} 与 \d 相同 - 这不是错误,但没有理由明确定义一个字符只出现一次。
  • 您有一个 \g 标志但没有 \i,因此您将在一个较大的字符串中多次匹配您要查找的字符串,但您的搜索不区分大小写。
  • [s|S|f|F] 的意思是“s or | or S or |...” 你的意思是“s or S or f...”,写成 [sSfF]。
  • 由于 \i 用于使搜索不区分大小写,因此我将 [sSfF] 简化为 [sf]
于 2012-12-05T20:35:24.667 回答
0

[bscs]不需要在方括号中:方括号表示borscor s。它可以在没有数字的情况下工作,因为它匹配“l1s10b”,但下一个字符不是数字,因此查找 4 位数字失败。尝试这个:

re = /[a-zA-Z]\d{1}[s|S|f|F]\d{2}bscs[0-9]{4}/g;
于 2012-12-05T20:35:51.710 回答
0

你似乎很困惑[]()

()创建一个组,而[]意味着“匹配内部的任何字母”。

[s|S|f|F]意味着's' OR '|' OR 'S' OR 'f' OR 'F'。那应该是(s|S|f|F)or [sSfF]

注意:您可以使用i修饰符使其不区分大小写。

re = /[a-z]\d[sf]\d{2}bscs\d{4}/gi;
于 2012-12-05T20:37:59.897 回答