簡體   English   中英

如何將此正則表達式轉換為mysql posix

[英]How to convert this regex to mysql posix

如果已有答案,請原諒我。

作為一個帶有正則表達式的總計n00b,我很難在這個場景中獲得良好的正則表達式:

我需要找到一個字符串是否只包含來自MySQL表字段的字母,字母和數字......例如。 只需獲得MET-KL2531910並獲得沒有數字的MET-IHLPOUJ(因此不包括MET-KL2531910)。

過了一段時間,想出了這些:

適用於MET-KL2531910

REGEXP '^(?=.*[-a-zA-Z])(?=.*[0-9])[-A-z0-9]+$'

適用於MET-IHLPOUJ

REGEXP '^(?=.*[-A-z])[-A-z]+$'

但是,由於MySQL使用POSIX,因此會出現此錯誤

從regexp獲得錯誤'重復 - 運算符操作數無效'

任何人都可以將我的正則表達式轉換為POSIX正則表達式。

適用於MET-KL2531910
REGEXP '^(?=.*[-a-zA-Z])(?=.*[0-9])[-A-z0-9]+$'

你可以用

^[-[:alnum:]]*([-[:alpha:]][-[:alnum:]]*[0-9]|[0-9][-[:alnum:]]*[-[:alpha:]])[-[:alnum:]]*$

細節

  • ^ - 字符串的開頭
  • [-[:alnum:]]* - 0+連字符或字母數字字符
  • ( - 另一組:
    • [-[:alpha:]][-[:alnum:]]*[0-9] - 連字符/ alpha字符,0 + alnum / -字符,數字
    • | - 要么
    • [0-9][-[:alnum:]]*[-[:alpha:]] - 一個數字,0 + alnum / - chars,連字符/ alpha char
  • ) - 交替組的結束
  • [-[:alnum:]]* - 0+連字符或字母數字字符
  • $ - 結束字符串。

對於MET-IHLPOUJ REGEXP '^(?=.*[-Az])[-Az]+$'

在這里,你根本不需要前瞻,因為你只匹配你需要的東西,使用

^[-[:alpha:]]+$

這里,

  • ^ - 匹配字符串的開頭
  • [-[:alpha:]]+ - 匹配1個或更多-或字母(= alpha字符)
  • $ - 結束字符串。

暫無
暫無

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

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