I need a regular expression to match strings that have letters, numbers, spaces and some simple punctuation (.,!"'/$
). I have ^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$
and it works well for alphanumeri开发者_高级运维c and spaces but not punctuation. Help is much appreciated.
Just add punctuation and other characters inside classes (inside the square brackets):
[A-Za-z0-9 _.,!"'/$]*
This matches every string containing spaces, _, alphanumerics, commas, !, ", $, ... Pay attention while adding some special characters, maybe you need to escape them: more info here
Assuming from your regex that at least one alphanumeric character must be present in the string, then I'd suggest the following:
/^(?=.*[A-Z0-9])[\w.,!"'\/$ ]+$/i
The (?=.*[A-Z0-9])
lookahead checks for the presence of one ASCII letter or digit; the nest character class contains all ASCII alphanumerics including underscore (\w
) and the rest of the punctuation characters you mentioned. The slash needs to be escaped because it's also used as a regex delimiter. The /i
modifier makes the regex case-insensitive.
<script type="text/javascript">
check("hello dfdf asdjfnbusaobfdoad fsdihfishadio fhsdhf iohdhf");
function check(data){
var patren=/^[A-Za-z0-9\s]+$/;
if(!(patren.test(data))) {
alert('Input is not alphanumeric');
return false;
}
alert(data + " is good");
}
</script>
精彩评论