【发布时间】:2017-03-13 20:55:02
【问题描述】:
我正在尝试编写一个函数,如果它的输入字符串与模式匹配则返回 true,否则返回 false。对我来说,这听起来像是正则表达式的工作。
模式为:<something>:<number>-<number>;
其中<something> 可以是字母、数字或空白的任意组合。该模式可以在输入字符串中重复任意次数,; 对于模式的最后一次重复是可选的。
所以这些将返回 true:
- ABC:1-2;CDE:3-4
- ABC:1-2;CDE:3-4;
- ABC:1-2
- :1-2
但这些会返回 false:
- ABC:1-2;cats;CDE:3-4
- ABC:1-2;CDE:3-4;猫
我知道模式的一个重复可以用
表示[\w\d\s]*:\d+-\d+;?
但我正在努力寻找如何确定整个字符串是否仅由该模式的重复组成。
我尝试了几件事,包括用( )+ 和/或^ $ 包围模式,但一直遇到问题。在 JavaScript 中检查字符串是否仅由重复一次或多次的模式组成的最佳方法是什么?
【问题讨论】:
-
嗯,用
( )+包围它应该可以工作。除非;字符后有 1 个或多个空格或换行符。 -
这个
ABC:1-2CDE:3-4和这个ABC:1-2 CDE:3-4FGH : 77 - 77是真是假? -
@KodosJohnson 用 ( )+ 包围它的问题是,第一个失败,即中间有猫的失败,对于 equals() 函数来说是正确的,因为它找到了两个单独的匹配序列,并且没有 match() javascript 等效于测试整个字符串。
-
@ibrahimmahrir 我希望这些都是真的,但这并不是完全必要的。不过,很好的收获。接受空间正在待办事项列表中。
标签: javascript regex