使用正则表达式来匹配字符串和字母数字,空格和标点符号

问题描述:

我需要一个正则表达式来匹配具有字母,数字,空格和一些简单标点符号的字符串(.,!"'/$)。我有^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$,它适用于字母数字和空格,但不是标点符号。非常感谢帮助。使用正则表达式来匹配字符串和字母数字,空格和标点符号

+2

在哪些部分要匹配标点符号?你有什么尝试?另外,你是否有任何样本输入? – Wiseguy

+0

为什么不只是在括号内添加(转义的)标点符号? – Blazemonger

+0

那么,该表达式没有标点符号......当然它不能工作。学习正则表达式的很好的来源:http://www.regular-expressions.info/ –

只需添加标点和其他字符内部类(方括号内):

[A-Za-z0-9 _.,!"'/$]* 

这包含空格的每一个字符串匹配,_,字母,数字,逗号,",$ ... 收费注意同时加入一些特殊的字符,也许你需要转义:more info here

+0

你如何将它融入.test()? – ac360

+0

你的意思是这样(Javascript提前)? var rgx =/[A-Za-z0-9 _。,!''/ $] * /; rgx.test(“testme”); 或者像这样:/ [A-Za-z0-9 _ ('testme') – CaNNaDaRk

+0

我刚试过这个 var r =/[A-Za-z0-9 _。,!''/ $] */ r.test(' ¬¬'); 返回true?我是否缺少一些东西 – user2330270

从你的正则表达式假设至少一个字母数字字符必须出现在字符串中,那么我建议如下:

/^(?=.*[A-Z0-9])[\w.,!"'\/$ ]+$/i 

(?=.*[A-Z0-9]) lookahead检查是否存在一个ASCII字母或数字;嵌套字符类包含所有ASCII字母数字,包括下划线(\w)和您提到的其他标点字符。斜杠需要被转义,因为它也被用作正则表达式分隔符。 /i修饰符使正则表达式不区分大小写。

<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>