regex - 正则表达式在 regex101 中匹配,但在 TypeScript 正则表达式测试中不匹配
问题描述
我需要一个匹配 0.0 - 6.0 的数字的正则表达式,它还应该匹配 0,0 - 6,0 这样的逗号,最后但并非最不重要的是它应该匹配 0-6 的数字。
我是正则表达式的新手,因此不介意我的正则表达式是否完全错误。
我当前的正则表达式是->/(^[0-5][.|,]\d$)|(^[6][.|,][0]$)|(^[0-6]$)/gms
这匹配 regex101 中的所有情况,但不匹配我的打字稿代码。
在代码中,我匹配我的字符串如下:
/(^[0-5][.|,]\d$)|(^[6][.|,][0]$)|(^[0-6]$)/gms.test(stringToTest)
这匹配 0-6 和 0.0-6.0 但不匹配 0,0-6,0。我怎样才能改进我的正则表达式,它的工作原理如 regex101 所示?
在此先感谢您的帮助。
解决方案
你可以使用
^(?:[0-5](?:[.,][0-9])?|6(?:[.,]0)?)$
^
线的开始(?:
非捕获组[0-5]
匹配一个数字 0-5(?:[.,][0-9])?
可选择匹配一个.
或,
后跟一个数字 0-9|
或者6
第 6 场比赛(?:[.,]0)?)
可选地匹配一个.a.
或,
后跟一个 0
$
行结束
请注意,您不需要字符类中的管道[.|,]
,这意味着匹配管道字符而不是 OR。[6]
不必在方括号之间。
您不需要该/s
标志,因为该模式确实使用了一个.
也应该匹配换行符的点。
const regex = /^(?:[0-5](?:[.,][0-9])?|6(?:[.,]0)?)$/gm;
推荐阅读
- java - 使用具有功能接口的 Java 泛型类型时编译错误
- ios - 导入 Firebase 时没有这样的模块“FirebaseDatabase”
- android - 使用 GridLayoutManager 将 Recycler 视图转换为 Pdf
- react-native - 如何在反应本机堆栈导航器中实现不同的“分支”
- botframework - QnA Maker 的 ocp-ipm 订阅密钥
- database - Query 正在基于 Spring Microservices 的应用程序中将 RequestOBject 更新为 DB
- javascript - 无法在 Snowflake 的 Javascript UDF 中使用查询结果
- python - 使用 CreateModelMixin.create() 将对象添加到 ManyToMany 字段
- node.js - 在 node.js 中评估 xpath2.0
- node.js - 如何在服务器端渲染 ReactJs 中将 css 文件转换为 html?