无法使用javascript生成正则表达式
我想为我的大学注册号做一个正则表达式。我成功了75%。我是新来的,我不知道怎么做。这就是我正在做的无法使用javascript生成正则表达式,javascript,regex,Javascript,Regex,我想为我的大学注册号做一个正则表达式。我成功了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]
<!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>
根据你的描述,这个应该合适
我更改了以下内容:
- [bscs]表示“b或s或c或s”(因此“b或s或c”,额外的s没有意义)。您只需要四个字符的字符串“BSC”
- \d{1}与\d相同-这不是错误,但没有理由明确定义字符只出现一次
- 您有一个\g标志,但没有\i,因此您可以在一个较大的字符串中多次匹配要查找的字符串,但您的搜索不区分大小写
- [s | s | f | f]表示“s或|或s或|……”您的意思是“s或s或f……”,写在[sSfF]上
- 由于\i用于使搜索不区分大小写,因此我将[sSfF]简化为[sf]
无需将
[BSC]
置于方括号内:方括号表示b
或s
或c
或s
。它在没有数字的情况下工作,因为它与“l1s10b”匹配,但下一个字符不是数字,因此查找4个数字失败。试试这个:
re = /[a-zA-Z]\d{1}[s|S|f|F]\d{2}bscs[0-9]{4}/g;
您似乎混淆了
[]
和()
()
创建一个组,而[]
表示“匹配内部的任何字母”
[s | s | f | f]
是指的“s”或“s”或“f”或“f”
。这应该是(s | s | f | f)
或[sSfF]
注意:可以使用i
修饰符使其不区分大小写
re = /[a-z]\d[sf]\d{2}bscs\d{4}/gi;
不清楚你想匹配什么。你能给我们一组字符串来匹配你的正则表达式吗?1:l1s10bscs2034 2:L1F10BSCS1111它应该可以很好地处理这些类型的字符串。为什么你要用
[0-9]{4}
而不是\d{4}
?所以“BSC”应该总是按照这个顺序出现在字符串中?你可能想把它作为一个答案,@AmericanUmlaut。前一个匹配,即使它只匹配字符串“BSC”部分的第一个字符。您需要匹配BSC吗?省略()
也行吗?@Guvante你说得对,括号是不必要的。实际上我喜欢它们,因为它们清楚地描述了子字符串,但为了使正则表达式尽可能简单,我省略了它们。[s|f]
的意思是“s”或“|”或“f”
。这不应该是[sf]
或(s | f)
?@RocketHazmat-Yep。固定的。另外,我刚刚意识到没有理由为第一个数字显式定义{1}。@dEvILsadVocAte我不是正则表达式最佳实践方面的专家,但我会就以上给出以下反馈:正如Rocket Hazmat所说,将单个字符包装在[]中毫无意义。您从地址的本地部分排除了许多合法字符(如.-)(请参阅)。从技术上讲,电子邮件地址的本地部分(而不是域)是区分大小写的,尽管我认为通常将其视为不区分大小写。你不会认出googlemail.com,即使它相当于gmail.com。[s | s | f | f]
不会做你认为它会做的事。是的,你是对的,
字符不属于这里。[]
中的
很好。让整个匹配不区分大小写可能是可以接受的,也可能是不可以接受的。@RocketHazmat我还有一个问题。如果我想限制电子邮件地址RE中的连字符“-”,我该怎么办?我的意思是电子邮件地址可以是字母数字类型,但在电子邮件中不能有其他字符,如连字符“-”,分号“;”和昏迷','。如何在RE中限制它们?@dEvILsadVocAte:在[]
中,^
字符表示“不”。例如,[^;]
是“非;
的任何字符”。
re = /[a-zA-Z]\d{1}[s|S|f|F]\d{2}bscs[0-9]{4}/g;
re = /[a-z]\d[sf]\d{2}bscs\d{4}/gi;