2015-11-05 170 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))因为现在你有这个特权。 –

相关问题