簡體   English   中英

有人可以解釋/ ^(\\-| \\ +)?([0-9] + | Infinity)$ /​​是什么嗎?

[英]Can someone explain what /^(\-|\+)?([0-9]+|Infinity)$/ is?

/^(\-|\+)?([0-9]+|Infinity)$/

當我想要過濾事物時,我已經多次看到這種情況。 有很多變體,但通常總是以(/開頭。最近,我發現這是一個建議,以幫助解析字符串並確保其中僅包含數字。在Regexp的Mozilla js頁面上,我發現了其他一些運算符,但是幾乎不包含上述所有內容。

這是一個正則表達式。 您粘貼的數字將匹配正/負整數,或者匹配單詞infinity。 簡而言之,正則表達式為:

正則表達式(簡稱regex或regexp)是用於描述搜索模式的特殊文本字符串。 您可以將正則表達式視為類固醇上的通配符。

http://www.regular-expressions.info/

您經常會看到正則表達式寫為/expression_here/因為在許多編程語言中,這些斜杠是開發人員構建正則表達式對象的捷徑。

您可以創建一個簡單的表達式來將數字與以下內容匹配:

/^[0-9]*$/.test('44') // returns true

/^[0-9]*$/.test('asdasd') // returns false

像這樣的表達式以及像您粘貼的那樣的表達式將被解析並變成小型機器(稱為有限狀態機 )。 機器的整個目的是確定字符串是否與機器表示的表達式匹配,或者是否與字符串匹配。 然后,您可以將字符串輸入到這樣的機器中,它將向您吐出答案。

在上面的示例中,我們使用test方法將字符串44asdasd饋入到正則表達式/^[0-9]*$/ ,由於44與表達式匹配,因此返回true因為asdasd與表達式不匹配,因此返回false

我們還可以分解您包含在帖子中的正則表達式:

^表示正則表達式必須從字符串的非常開頭開始匹配

(\\-|\\+)表示從字符串的開頭開始,並且匹配-+ ,問號表示此部分是可選的

[0-9]+|Infinity表示“匹配一個或多個0到9之間的數字”,或( | )匹配文本Infinity

$表示“然后要求字符串在此處結束”

這是一個匹配正/負自然數或Infinity則表達式

/^(\-|\+)?([0-9]+|Infinity)$/

^(\\-|\\+) -將字符串的開頭與-+文字字符匹配。

? -前面的表達式是- / +字符,是可選的。 換句話說,表達式可以匹配0或1次。

([0-9]+|Infinity)$ -字符串的末尾應為1個或多個數字或字符串Infinity

// Matches:
'-100'.match(/^(\-|\+)?([0-9]+|Infinity)$/);
'+100'.match(/^(\-|\+)?([0-9]+|Infinity)$/);
'Infinity'.match(/^(\-|\+)?([0-9]+|Infinity)$/);
// Does NOT match:
'5%'.match(/^(\-|\+)?([0-9]+|Infinity)$/);
'20/1'.match(/^(\-|\+)?([0-9]+|Infinity)$/);
'NaN'.match(/^(\-|\+)?([0-9]+|Infinity)$/);

暫無
暫無

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

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