簡體   English   中英

這個條件的正則表達式是什么?

[英]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.

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