2015-11-05 76 views
-1

我只把這個字母,數字下劃線和破折號JavaScript和PHP的正則表達式只允許字母,數字,句號,星號,下劃線和破折號

var regexp = /^[a-zA-Z0-9-_]+$/; 

$test = preg_replace('/[^a-zA-Z0-9_-]$/s', '', $ebay_username); 

我需要過濾js和php的ebay用戶名。

+0

'.'和'*'是特殊符號,因此應該使用\ –

+1

''作爲範圍來使用它逃脫它或將它移動到最後'/^[a-zA-Z0 -9 \ -_] + $ /' – Tushar

+1

@u_mulder沒有,不在字符類 – Tushar

回答

0

您可以使用

var regex = /^[a-zA-Z0-9-.*_]+$/; // for JS 
$test = preg_replace('/[^a-zA-Z0-9-.*_]/', '', $ebay_username); // for PHP 

主要思想是隻添加你需要的字符類的符號。另外,$錨也阻止從字符串結尾的錨定匹配字符串中刪除所有不需要的字符。

關於連字符:它位於字符類內部的範圍之後,因此被解析爲文字-符號。作爲最佳做法,它應該放在角色類的末尾,以便不必轉義它(儘管它在ElasticSearch中不起作用,它仍然應該在角色類的末尾轉義,但不在其起始處)。

+0

很高興爲你工作。如果我的回答對你有幫助,請考慮upvoting(參見[如何在堆棧溢出?](http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow))因爲現在你有這個特權。 –

相關問題