我正在编写一个带有客户端和服务器端验证的php表单类。我在检查字符串中是否存在使用javascript中的正则表达式的字面反斜杠(“\”)时遇到问题。
我想回避除使用正则表达式之外的其他解决方案,因为这会减少php和js之间的特殊情况,并减少我需要写入的条件代码的数量。
我刚刚将此作为用户在此表单类中可能需要的示例 -
作为字符串的密码字段 6到12个字符之间的长度和那个 排除“\”,“#”,“$”,“`”
我试过了:
^[^(\u0008#\$`)]{6,12}$
^[^(\b#\$`)]{6,12}$
^[^(\\#\$`)]{6,12}$
他们都没有为反斜杠工作,我无法理解为什么。仅供参考:后者在PHP中运行良好。
答案 0 :(得分:3)
正则表达式\\
匹配单个反斜杠。在JavaScript中,这会变为re = /\\/
或re = new RegExp("\\\\")
。
答案 1 :(得分:1)
看起来你已经创建了一个slash-hash-dollar-tick分组,而不是寻找任何这些字符。
试试这个
var rgx = new RegExp(/^[^\\#\$`]{6,12}$/);