簡體   English   中英

我的正則表達式匹配整數有什么問題?

[英]What's wrong with my regex to match an integer?

是的,我確定之前已經在StackOverflow上詢問過這個問題,但是如果有的話請指點我,因為我找不到它。 有很多正則表達式的問題,有些甚至與我想要的相似。

基本上,我想匹配正數和負數的整數(即整數)。 所以沒有任何以小數點后跟更多數字的結尾。 我只關心英文風格的編號,我不想讓千分隔等等,而我只想用一個'。' 作為一個小數點,這些奇怪的'逗號都不是某些國家的小數點'。

^[+-]?\d+(?!\.\d)

但以上似乎匹配如下......

10      matches '10'       <- yay
465654  matches '465654'   <- yay
653.56  only matches '65'  <- boo
1234.5  only matches '123' <- also boo!

嘗試使用regexper ,在視覺上它看起來就像我想要的那樣。 我是新的負向前瞻,所以我顯然在這里錯過了什么,但它是什么?

另外,我應該說我正在使用它作為我正在編寫的解釋器的一部分,因此我想在整數之后允許其他內容。 例如

12 + some_variable

或者(更復雜的)......

10.Tostring()  <- should still match the '10'

您的模式匹配任何未跟隨的數字序列. 和另一個數字。 1234.5 ,子串123后面沒有a . (因為它后跟一個4 ),所以這是一個有效的匹配。

嘗試使用結束錨( $ )以確保在匹配的字符串后不顯示其他字符:

^[+-]?\d+$

如果您需要允許匹配字符串后面的字符,您可以嘗試使用否定前瞻以確保匹配的子字符串后面沒有a . 數字:

^[+-]?\d+(?![\d.])

示范


為了匹配字符串像10.ToString()你也可以使用負前瞻,就像這樣:

^[+-]?\d+(?!\.?\d)

示范

另一種策略是使用積極的前瞻,如下所示:

^[+-]?\d+(?=\.\D|[^.\d]|$)

示范

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM