[英]What is the regular expression for this condition?
我希望正則表達式清理我的數據,這些數據應該滿足以下條件
a) a-z and A-Z allowed
b) 0-9 allowed
c) Special Symbols like Comma (,) dot (.) question Mark (? allowed)
d) Single Space is allowed
我試過了,想出了這個
preg_replace('%[^a-zA-Z0-9,.?\s]%', '', $string);
我對正則表達式不太熟悉,雖然上面的代碼有效,但我想知道
a) 如果我使用正確的 RegExp 語法?
b)如果我不在語法的開頭和結尾使用
modulus(%)
,它將不起作用,我不知道模數的目的是什么?
如果您要求允許任何單個空格(包括空格、換行符、水平制表符、垂直制表符、換頁符等),那么您的正則表達式是正確的。 但是,如果您只想允許空格,則將\s
更改為 .
preg_replace
調用會從輸入中刪除所有不允許的字符。
preg_replace
調用中的%
用作正則表達式分隔符。 preg_
系列函數期望正則表達式位於一對分隔符內。 我在這里的回答更多地談到了可以用作分隔符的內容。
a)如果它有效,它是正確的。
b) “當使用 PCRE 函數時,模式需要用分隔符括起來。分隔符可以是任何非字母數字、非反斜杠、非空白字符”——來自PHP 文檔
\s 是一個空白字符。 其中包括標簽。
此外,如果您可以允許下划線,\w 可能會使其更簡單一些
\w = [a-zA-Z0-9_] // \w is a "word" character (including underscores)
您需要轉義點、逗號和問號
[^a-zA-Z0-9\,\.\?\s]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.