我想知道這個正則表達式是否正確,用於檢查字符串是否不以點開頭,是否以點結尾並至少包含一個點在任何地方,但不是開始或結束:正則表達式字符串不包含連續的2個點
我的問題是,我無法確定如何檢查是否有連續的2個點。
/^([^.])+([.])+.*([^.])$/
我想知道這個正則表達式是否正確,用於檢查字符串是否不以點開頭,是否以點結尾並至少包含一個點在任何地方,但不是開始或結束:正則表達式字符串不包含連續的2個點
我的問題是,我無法確定如何檢查是否有連續的2個點。
/^([^.])+([.])+.*([^.])$/
看來你需要使用
^[^.]+(?:\.[^.]+)+$
詳細:
^
- 串的開始[^.]+
- 比其他1+字符一個.
(因此,第一個字符不能.
)(?:\.[^.]+)+
- 1以上(因此,在字符串中的點是強制性出現在至少一次)的序列:
\.
- 點[^.]+
- 比.
1+字符另一個(+
量詞使得比其它.
炭至少出現一次船尾因此,使得不可能將字符串與2個點相匹配)$
- 字符串結尾。將''[^。] +(?:\。{0,x} [^。] +)+ $'不能解決'必須有'。問題?其中x是最大連續點數? – user3012759
@ user3012759:限制量詞在這裏是多餘的,因爲我們需要在兩個非'''符號之間匹配一次*。*。 –
啊,是的,你是對的OP問至少有一個,所以是你的解決方案是完全正確的。 – user3012759
你靠近,有一試:
^[^.]+(?:\.[^.]+){2,}$
它maches有2個或更多點的字符串,而不是在開始時或結束。
如果你想要一個或多個點:
^[^.]+(?:\.[^.]+)+$
如果你想要一個或兩個點:
^[^.]+(?:\.[^.]+){1,2}$
使用該網站來測試你的正則表達式https://regex101.com/ – RaR
這你使用的編程語言?有可能是更容易的解決方案.. – Kent
*「我想知道這個正則表達式是否正確」* - 只有一種方法可以知道它是否正確(鑑於您沒有提及該程序或你想要使用它的語言):將它傳遞給目標程序,看看它是否做到了你想要的。 – axiac