正則的 * 問題...


#1

st = "hello world! 123"
st.match(/\d*/)→ "“
st.match(/\d\d*/)→"123”

st1 = “hello world!123"
st1.match(/\d*/)→”"
不太了解的是.
為何 \d* 是 0-無限…
為何一個是 “”(\d=0的意思)
另一個是 “123” (\d\d*, *=最長的意思…)

求解…謝謝

應該是第一個字就配完的意思吧
\d* = \d{0}的意思吧


#2

* 代表比對前一個字元0個或0個以上
第一個條件是match(\d*)代表0個或0個以上數字
第二個條件match(\d\d*)第一個\d代表第一個字元是數字,\d*代表0個或0個以上數字,所以組合起來條件就是第一個字元要是數字第二個字元可以是0個或0個以上數字

\d* 不等於 \d{0}
{}這個符號代表數量,所以你上面寫\d{0}代表0個數字

ex, \d{1} “hello world! 123” 就會抓到 1
\d{2} “hello world! 123” 就會抓到 12


#3

你的

\d*

代表的是『“無"或"數字一以上”』,所以開頭一開始就match到了,也就是"h"前面的"無"

\d\d*

代表數字一 + 上面的判斷,也就是一定要有數字,所以自然就會是後面的123

而另外一方面

/\d\d*/ 約等於 /\d+/

所以你應該要用的是 \d+ 才對就是


#4

對啊~

才想到第一個字就比對到了~~

st = "hello word! 123"
re = /\d*/

st.match(re) → ""
st =~ re → “0”

看上面就了解了~~
以為是比對到 123 那邊…

感謝…