2013-04-23 24 views
0

我對HTML pattern="[a-zA-Z0-9-_. ]{1,30}"中的模式有此示例。這意味着只允許使用字母數字和-_.,但我想製作一個像preg_replace這樣的模式,它允許所有內容但不是[ <>/\:*?"|]在HTML輸入中使用模式屬性

那麼我該怎麼辦呢?

回答

1

你可以嘗試以下方法:

$test = "Hello [<>/\:*?\"|Mister] Jean-Samuels, how are you?_."; 
echo preg_replace('/[^\d\w-_. ]+/', '', $test); 

輸出:

Hello Mister Jean-Samuels how are you_. 

編輯:

這是你的HTML模式的JSFiddle

HTML:

<input title='Enter anything but <, >, /, \, :, *, ?, ", |' 
type='text' 
pattern='[^<>\/\\:*?"|]{1,30}' required /> 
+0

大家好,tahnks的答案,但我不是在談論在PHP代碼中的正則表達式我正在討論把正則表達式放在HTML模式中,我嘗試過使用char ^來排除一些字母,但它沒有在HTML模式中工作... – user2303038 2013-04-24 11:42:02

+0

我編輯了我的文章,使其成爲HTML模式。 – AdamM 2013-04-24 13:20:31

0

^運營商在字符類將否定整個班級,所以你可以使用:

[^<>/\:*?"|] 

將匹配一切除了這些字符的字符內類。請記住,如果pattern屬性的周圍引號也是",則可能必須轉義"。在正則表達式

+0

我認爲這些角色的一些必須逃脫讓他們工作。 – Hexodus 2013-04-23 18:32:21

+0

@Hexodus真的很看重上下文。但是,'''可能需要轉義,如果周圍的引號是'''。 – 2013-04-23 18:34:18

0

負值字符類做過這樣的:[^characters to exclude]

注意^只是[內,這是什麼使得它一負。

這就是說,你應該跟你有什麼堅持,否則你會得到我這樣的人試圖進入ヴィックサ一個名字:P

+2

但是如果我的名字是ヴィックサ? :(不是) – 2013-04-23 18:24:09

+2

然後你把它羅曼蒂克給Vixor;) – 2013-04-23 18:24:48