亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用正則表達式驗證二進制分數?

如何使用正則表達式驗證二進制分數?

眼眸繁星 2023-12-13 15:01:28
目前,我正在使用[^0-1]Matcher 類中的 find() 使用正則表達式將二進制值輸入限制為僅 1 和 0。String binaryValue = "10", strRegex = "[^0-1]";Pattern p = Pattern.compile(strRegex);Matcher m = p.matcher(binaryValue);if(m.find()){    System.out.println("invalid");}else{    System.out.println("valid");}我希望在我的代碼中發生的是:如果 binaryValue 僅包含 0 和 1 的組合以及可選的一個點(小數點),則打印“valid”有效格式示例:1001、10.01、.1001、1001.0
查看完整描述

2 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

要匹配以下二進制十進制格式100110.01.10011001.0,您可以使用以下命令:

請參閱此處使用的正則表達式

^(?:[01]+|[01]*\.[01]+)$

這是如何運作的:

  • ^斷言位置位于行的開頭

  • (?:[01]+|[01]*\.[01]+)匹配以下選項之一

    • 選項 1:[01]+匹配任何二進制數字(0 或 1)一次或多次

    • 選項 2:[01]*\.[01]+匹配任意二進制數字(0 或 1)零次或多次,后跟原義點字符.,然后匹配一個或多個二進制數字(0 或 1)一次或多次。

  • $斷言位置位于行尾

請注意,您需要在 Java 中轉義反斜杠^(?:[01]+|[01]*\\.[01]+)$

另請注意,這不會匹配0.(或類似的1.、11.等),因為這種情況未明確包含在問題中。為了匹配這種情況,您可以使用(?:[01]+\.?|[01]*\.[01]+). 這兩個正則表達式模式不允許字符串.匹配。


查看完整回答
反對 回復 2023-12-13
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

^[01]+(.[01]+)?$

我解釋一下這個正則表達式的作用:

  • ^斷言行首。

  • [01]+必須至少出現一個 0 或 1。

  • (.[01]+)然后,可能會出現一個點,后跟至少一個 0 或 1?。正如括號中所述,這也被視為第一個捕獲組。

  • ?前一個元素必須出現零次或一次。這可以防止匹配超過 1 個點。

  • $斷言行尾。


你可以在這里測試一下


查看完整回答
反對 回復 2023-12-13
  • 2 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號