我使用以下正则表达式来验证用户名(注册表单中的输入类型文本),以确保用户名仅包含字母数字字符、点、破折号或下划线。if(!preg_match('/^[a-zA-Z0-9\.\_-]+$/',$my_name)){echo'no_valid';}当我在文本字段中键入例如%或#或@时,我会正确返回错误消息,指出它不是有效的用户名,并且有效字符(.-_)也被接受,所以它似乎工作正常,直到当我输入&或+时,我就可以输入之前使用preg_match排除的任何无效字符。谁能告诉我为什么会这样,我该如何解决这个问题? 最佳答案 问题出在别处。你
我的正则表达式有一个小问题,我用它从强字符串中提取电话号码';print_r($matches[0]);?>输出Array([0]=>718-838-3586[1]=>1052202932[2]=>800-308-4653[3]=>866-641-6949[4]=>800-871-0999)这个工作正常,但它返回1052202932作为我不需要的结果之一。实际上我不知道我的模式中缺失的部分在哪里。 最佳答案 每个[-]之后的?使-成为可选的。如果您希望它成为必需的,您只需删除?即可使其成为必需的。另外,[-]等同于-所以我去掉了不必
这个问题在这里已经有了答案:RegularExpressionforextractingtextfromanRTFstring(11个答案)关闭9年前。我使用的数据库中的一列包含RTF字符串,我想使用PHP去除这些字符串,只留下中间的句子。如果我没记错的话,它是一个MSSQL数据库2005。从数据库中提取的字符串类型的示例(需要更多的告诉我,其余的都是类似的):{\rtf1\ansi\ansicpg1252\deff0\deflang2057{\fonttbl{\f0\fnil\fcharset0Tahoma;}}\viewkind4\uc1\pard\lang1033\f0\fs17
我需要根据这些规则验证字符串:值不是s值的长度至少为1个字符值仅包含a-z0-9-_/值不以/开头值不以/结尾值不包含/s/值不包含//值不以s/开头值不以/s结尾(更简单地说,我正在寻找类似于UNIX风格的路径,带有斜杠分隔符,其中文件/文件夹名称只允许a-z0-9-_,没有文件/文件夹名为s,它没有开头或结尾的斜杠。)我需要在客户端通过JavaScript执行此操作,在服务器端使用PHP执行此操作。我知道最优雅的解决方案是通过复杂的正则表达式。但是尝试写一个值得挑战吗?还是我应该只使用条件?现在,我的解决方案是:http://jsfiddle.net/cKfnW/JavaScrip
在我的方法中,我从源代码中提取了以下字符串PlangeMühle1,40221Düsseldorf我现在要做的是过滤掉所有内容,直到逗号,然后是数字,然后是再说一遍我所做的是执行这个不起作用的正则表达式。^(.*?),\s*([0-9]{5})\s*(\S*)但这应该正常工作,对吧?所以我又开始删除所有内容,然后一部分一部分地删除。当我只有部分时,它需要一切,直到它工作的逗号,但当然只适用于逗号之前的数据。但是,在第一个空格之后,问题出现了。当我之后做任何事情时,比如[^0-9]一个标志出现了。就在这里数组(2){[0]=>string(19)"PlangeMühle1,�"[1]=>
我试图找到一个与定义了超文本的HTML超链接标记相匹配的正则表达式。例如:Thedefinedtext我需要匹配任何超链接,它的超文本是“定义的文本”。我刚刚在RegularExpressionLibrary上找到了以下表达式但并没有解决问题。.+?)(?=[>\s]).*?>(?.+?)我希望有一个适用于PHP的解决方案。 最佳答案 $regex="/Thedefinedtext/";//correctedasperthecomments$str='ThedefinedtextTheNot-definedtext';preg_ma
我在javascript中有这个用于验证的正则表达式:/^(?:'[A-z](([\._\-][A-z0-9])|[A-z0-9])*[a-z0-9_]*')$/现在我想要使用Codeigniter的表单验证对表单验证使用相同的正则表达式:$this->form_validation->set_rules('username','Nombredeusuario','required|min_length[2]|max_length[15]|regex_match[/^[A-Za-z0-9_.\-]+$/]|is_unique[user.username]');该行中的正则表达式不等同于
我花了4个多小时试图找到我的php代码的正则表达式模式,但运气不佳。我有一个带有html代码的字符串。它有很多url格式,例如:example.comhttp://example.comhttp://www.example.comhttp://example.com/some.phphttp://example.com/some.php?var1=1http://example.com/some.php?var1=1&var2=2etc.我有以下部分工作的php代码:preg_match_all('/\b(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)[
我有这个简单的正则表达式,我正在RegExr上测试它.^(?[a-z0-9\-]+)它应该给我一个带有name字段的关联数组,该字段匹配包含a-z和0-9的字符串。但我得到了带有红色下划线的?字符和该错误。为什么? 最佳答案 不幸的是,RegExrv2依赖于JSRegExp实现,它不支持命名捕获组。在regularexpressions101查看您的工作正则表达式 关于php-正则表达式-量词的目标无效,我们在StackOverflow上找到一个类似的问题:
我需要一个正则表达式来仅在可能的情况下接受输入1.仅以字符[a-zA-Z]开头2.可以包含数字但不能重复3次以上示例:akjsjdfljsfjl133113有效123123sfsf无效asfsdf1111asdf无效adf111无效我试过这段代码$input_line="sfjs123232";preg_match("/^[a-zA-Z](\d)\1{2,}/",$input_line,$output_array); 最佳答案 您可以在此处使用NegativeLookahead。^[a-zA-Z]+(?:(?!.*(\d)\1{2,