javascript和phpregex,只允许使用字母、数字、句号、星号、下划线和短划线


javascript and php regex to allow only letters, numbers, full stops, asterisks, underscores and dashes

我只将其用于字母、数字、下划线和短划线

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

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

我需要为ebay用户名过滤js和php。

您可以使用

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

其主要思想是将所需的符号添加到字符类中。此外,$锚点防止从将匹配锚定在字符串末尾的字符串中删除所有不需要的字符。

关于连字符:它位于字符类内的一个范围之后,因此被解析为文本-符号。作为最佳实践,它应该放在字符类的末尾,这样就不必对其进行转义(尽管它在ElasticSearch中不起作用,因为它仍然应该在字符类末尾进行转义,但不应该在其开头进行转义)。