0

我的正则表达式是下一个

/^(\.\w*)|(\d*\.?\d*)$/

它应该适用于浮点数(123.23, 12., .56)和任何以点开头的单词。 当但没有 OR
时我很困惑:
/^(\.\w*)|(\d*\.?\d*)$/.test("qweasdzxc"); // return true

/^(\.\w*)$/.test("qweasdzxc"); // return false   
/^(\d*\.?\d*)$/.test("qweasdzxc"); // return false

RegexPal 上一切正常

4

2 回答 2

2

它应该是

/^((\.\w*)|(\d*\.?\d*))$/

您需要将两个 OR 条件包装在另一个(..).

否则,它被解释为^(\.\w*)or(\d*\.?\d*)$而不是^and ( (\.\w*)or (\d*\.?\d*)) and $

演示:小提琴

于 2013-03-18T12:13:19.917 回答
1

试试这个

/^((\.\w*)|(\d*\.?\d*))$/.test("qweasdzxc"); // false
/^((\.\w*)|(\d*\.?\d*))$/.test(".5"); // true

您必须封装正则表达式条件 (A|B)。

于 2013-03-18T12:13:01.610 回答