php – 正则表达式删除非键盘字符

我试图从用户的输入中删除所有非键盘字符,我正在努力实现它.以下正则表达式不是替换多个字符,只有一个…我尝试在末尾添加/ ig而不是/ i,但它作为一个无法识别的标志打破.我也尝试使用*和其他各种组合,似乎无法弄明白.

$data = preg_replace('/[^a-z0-9<>\s\!\@\#\$\%\^\&\*\(\)\_\+\-\=\{\}\[\]\|\\\:\;\"\'\?\/\>\.\<\,\®]/i', '', $data);

针对此文本进行测试:

营养咨询< br />< br />在线诊所访问,除非证书或EOC明确涵盖. Â< br />< br />健康俱乐部会员资格< br />< br />任何服务,您有权获得这些服务的Medicare福利,而无需支付Medicare承保额外的额外费用< br />< br />食品或膳食补充剂,除非,如证书或EOC中明确规定或法律要求< br />基于非医学原因的基因检测或当没有医学指征或没有遗传异常的家族史时< br />< br />室外治疗程序< br />< br />当丢失或更换假肢和耐用的医疗设备时偷窃< br />< br />提供给协议未涵盖的任何人的任何服务或用品,与代孕怀孕有关< br />< br />免疫接种仅适用于在美国< br />< br />与预先存在的条件相关的服务或用品< br />< br /> Educationa l服务除非Anthem Blue Cross< br />< br />不孕症服务(包括消毒逆转和与精子,卵子,胚胎和卵巢组织储存有关的费用)特别规定或安排,除非另有说明在证书或EOC< br />< br />在非合同医院提供的护理或治疗< br />< br />私人护理护理除非在证书或EOC < br />主要用于减轻体重的服务,除了病态肥胖的医学必需治疗之外< br />门诊药物,药物或在任何门诊患者中分配或施用的其他物质< br /> ; br />< br />避孕装置,除非您的医生确定口服避孕药在医学上不合适. < br />< br />静脉治疗:当服务用于美容目的时,通过任何方法(包括硬化疗法或其他手术)治疗静脉曲张或毛细血管扩张的真皮静脉(蜘蛛静脉). < br />< strong>< br />第三方责任< / strong> – 如果会员从法律责任第三方那里收回损害赔偿金,Anthem Blue Cross有权获得补偿. < br />< br />< strong>福利的协调< / strong> – 如果会员拥有任何其他团体健康,牙科,处方药或视力保险,以便从所有团体保险范围收到的服务不超过承保费用的100%,则可以减少该计划的好处.< br />

最佳答案 对不起,我在第一个答案中混淆了一些事情

PHP不知道g修饰符.如果你只想匹配它,请使用preg_match_all而不是preg_match,但默认情况下preg_replace是贪婪的.

我在writecodeonline.com上尝试了这段代码

$data = "Nutritional counseling <br /><br />Online ÄÖÜ Clinic Visits except as specifically covered in the Certificate or EOC. ÂÂ<br /><br />";
$pattern = '/[^a-z0-9_<>\\s!@#$%^&*()+={}\\[\\]|\\/:;"\\'?.,®-]/i';

$data = preg_replace($pattern, '', $data);
echo ($data);

和它的工作.

由于某种原因,它需要在那里进行双重转义,如果你不需要它,只需删除模式中的每一秒反斜杠.

我稍微清理了你的角色课.大多数角色在角色类内部时不需要被转义,只有那些在这样的类中具有特殊含义的角色,例如/当用作正则表达式分隔符时,’当用作字符串分隔符时…

但最后甚至你的代码在那里工作,当我只是改变你的代码以双重逃避.

点赞