回覆列表
  • 1 # 使用者9136121205203

    ^(?!.*[^\d+\-*/\(\)]) #規則0,字串必須由數字,符號和括號組成(?!.*\)\d) #規則A,不允許右括號後接數字(?!.*[+\-*/]([+\-*/]|\))) #規則B,不允許符號後面接符號或右括號(?!.*\([+*/]) #規則C,不允許左括號後接運算子(- 可以表示負號)(?!.*(\d|\))\() #規則D,不允許左括號前有數字或右括號(?=\d|\-|\() #規則E,字串開頭必須是,數字,負號,左括號中的一個(?=.*(\d|\))$) #規則F:結尾必須是數字或者右括號[^\(\)]* #開始匹配,捕獲括號,使用平衡組來判斷括號數量是否相等,需要.NET的支援( ( (?"open"\() [^\(\)]* )+ ( (?"-open"\)) [^\(\)]* )+)*(?(open)(?!)) #規則G:左右括號數量必須相等$最終的正則表示式為:^(?!.*[^\d+\-*/\(\)])(?!.*\)\d)(?!.*[+\-*/]([+\-*/]|\)))(?!.*\([+*/])(?!.*(\d|\))\()(?=\d|\-|\()(?=.*(\d|\))$)[^\(\)]*(((?"open"\()[^\(\)]*)+((?"-open"\))[^\(\)]*)+)*(?(open)(?!))$沒考慮空格的情況,因為考慮空格需要加很多很多個\s*,大大降低可讀性由於使用了平衡組,此正則表示式需要在.NET環境下執行

  • 中秋節和大豐收的關聯?
  • 下聯:荷鋤帶雨分籬菊,上聯如何對?