我是相當新的正則表達式,並試圖匹配的字符串拒絕特定的正則表達式模式
- 可以有任意長度
- 可以是字母數字,也可以包含
$
,-
,或/
- 在一行中不能包含兩個以上的非字母數字字符或以
/
或-
結尾。
例如,Hello/World
有效,Hello//World
無效。
我已經嘗試了幾個不同的可能性,用這一個來最接近的工作,我很期待:
^--|-/|/-|\s\s|$$|$-|-$|$/|/$|//|([a-zA-Z0-9 -$/])*(?<![/-])$
這似乎是足夠的,除了當兩個斜槓在一起的每一個場景。是否需要轉義正斜槓,還是因爲我的匹配表達式太寬而吞嚥了糟糕的字符串?我已經嘗試了各種其他表達方式,但是它們都遇到了問題,尤其是帶有錯誤否定的問題。
乾杯,
傑夫
什麼語言/工具串(在
matches()
不必要的)的終結? – anubhava正斜槓不需要轉義,除非使用斜槓作爲分隔符時,在這種情況下可以使用,並且只需更改分隔符或使用/ {2}即可。我的方法是開發一個正則表達式,以匹配每個模式排除,然後或他們在一起,把一個!在它的前面,所以你只有在沒有任何排除模式匹配的情況下才能進行匹配。這將具有!(r1 | r2 | ... | rn)的形式,其中r1,r2 ... rn是要排除的模式的正則表達式。 – 2015-07-10 19:22:51
使用Java,但我一直在試圖通過使用RegexPlanet來解決問題。我會嘗試你的建議Tris,看看是否有效。 –