2016-02-28 91 views
1

我在做一个正则表达式,你可以让任何字符:正则表达式允许任何字母数字字符,带有重音和子弹,破折号任何字母和下划线

任何字母数字字符大写和小写,包括n个

2.任何字母大写和小写,有口音“AEIOU”

3.任何字母大写和小写符号“ä ëïöü”

4.下划线

5.破折号

6.点数

7.分号

8.换行符

9.删除任何特殊字符例如:¡=)(/ &%$#“|°¬'+} {};:?!_ []¨*`等等

与0之间和75

我搜索了很多资料,我发现了一些功能,指定最小和最大字符数,如,但要实现这一点,我已经给了很多的结合代码,我想用正则表达式来做这件事。

我做我自己的角色,到现在为止我有一个功能,它允许任何字母数字字符,空格,点划线,例如:

/^[a-zA-Z0-9_\-\. ]{0,75}+$/ 

我发现这个功能来删除特殊人物:

function remove_characters_special($text = '') {  
    $text = preg_replace('~[^\\pL\d\.]+~u', ' ', $text); 
    return $text; 
} 

它是有效的,为重音字母和子弹做到这一点?

/^[a-zA-Z0-9_\-\. áéíóúÁÉÍÓÚñÑäëïÖüÄËÏÖü]{0,75}+$/ 

请!我想帮助我完成此功能。

非常感谢,感谢您的帮助。

+0

而且您的匹配模式必须是Unicode正则表达式:'^ [\ PL \对-N \ S ._-] {0, 75} $/u'添加'u' [flag](http://php.net/manual/en/reference.pcre.pattern.modifiers.php)并使用[unicode categories](http://www.regular -expressions.info/unicode.html)如果输入是utf-8。 –

+0

@ bobble bubble - 非常感谢,我一直在测试,看起来脚本失败了,但我改变了模式/^[\pL\pN\pZ._\-- {0,75} $/。如果它有效,但如果我添加带有重音符号或子弹的字母失败,则需要在模式中转义脚本。 –

+0

哦!有一个滑。你试过'$ pattern ='/^[\ pL \ pN \ s ._-] {0,75} $/u';'缺少起始分隔符。 –

回答

0

感谢@漏接泡沫,一次长谈之后,我能得到正则表达式,我需要,我将分享他们对谁可以充当,如有需要,他们被插入到数据库之前过滤所有的数据,即使你接受逗号,分号和双点,此后您可能会添加更多特殊字符。

$text = "áéíóú ÁÉÍÓÚ äëïöüÄËÏÖÜ - _ , : ; "; 
$pattern = '/^[,:;\pL\pN\s._-]{0,75}$/u'; 

if (!preg_match($pattern, $text)) { 
    echo "No valid"; 
} else { 
    echo "valid"; 
} 

其他例子:这些代码是我的例子中,如果有一个PHP大师谁拥有更简单的方法,这将有助于证明这一点。

1.不指定字符数。

$pattern = '/^[,:;\pL\pN\s._-]+$/u'; 

2.允许双和单引号和支架而没有指定字符的数字。

$pattern = '/^[\'\'\"\"\(\),:;\pL\pN\s._-]+$/u'; 

@漏接泡沫非常感谢你,我爱你:)

相关问题