我正在使用下面的 C# 代码来检测字符串的格式是E123456、H123456还是T123456。
Regex(@"b[eht]d{6}")
我正在尝试使用Javascript等效物,但遇到了困难。
到目前为止,我有,但是每次应该返回true时它都返回false。
RegExp("b[eht]d{6}")
任何帮助将不胜感激,或指向正则表达式格式的良好链接。
您遇到的问题是由于以下事实:当将 RegExp 构造函数与字符串参数一起使用时,斜杠和引号等特殊字符必须使用反斜杠字符进行转义。此外,如果要同时允许大写和小写匹配,请使用 i
标志。
要使用构造函数方法制作正则表达式,请使用:
new RegExp("\b[eht]\d{6}", "i")
或者要使正则表达式文本,请使用:
var regExName = /b[eht]d{6}/i
另外,如果你想在JavaScript中更多地尝试正则表达式,http://regexr.com/是一个很棒的网站,我强烈推荐!
您的正则表达式仅匹配小写字符,而您的用户 ID 具有大写的 E、H 和 T。所以要么在正则表达式字符串中使用大写 ( RegExp("b[EHT]d{6}")
) 或使用 i
标志 ( RegExp("b[eht]d{6}",'i')
)
- 标志参考:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp
- 大写解决方案的在线测试仪:https://regex101.com/r/yW9zF2/1
- 标志解决方案的在线测试仪:https://regex101.com/r/mZ1vX9/1
转义字符串有一些麻烦,正如我所看到的,正则表达式应该不区分大小写。试试这个正则表达式:
/b[eht]d{6}/i
或者使用 RegExp
构造函数:
new RegExp("\b[eht]\d{6}", "i")