preg_match('~^[a-zA-Z0-9!@#$%^*()-_+=.]+$~', $string)
这是我在代码中使用的模式,我想要做的是告诉用户他们只允许使用这些字符。但问题是它适用于某些角色,而不适用于其他角色。例如,它不允许像“john& john”这样的字符串,但它允许“test<>”即使我没有输入'<'和'>'在模式中!
答案 0 :(得分:2)
模式中的大多数字符对正则表达式引擎具有特殊含义,必须使用反斜杠进行转义:
^[a-zA-Z0-9\!\@\#\$\%\^\*\(\)\-\_\+\=\.]+$
答案 1 :(得分:1)
我总是使用像https://regex101.com/
这样的工具来测试我的正则表达式你必须在正则表达式中转义一些特殊字符:
^[a-zA-Z0-9!@#\$%\^\*\(\)\-_\+=\.]+$
答案 2 :(得分:0)
这将有效:
foreach(var o in MyEntities.Stuff
.Include(x => x.RelationalTableA)
.Include(x => x.RelationalTableB)
.Include(x => x.RelationalTableC)
.ToList())
{
var x = new MyCustomClass();
x.Property1 = o.RelationalTableA.PropertyX;
x.Property2 = o.RelationalTableB.PropertyY;
x.Property3 = o.RelationalTableC.PropertyZ;
MyPocoList.Add(o);
}
答案 3 :(得分:0)
问题是在作为范围的字符类中间存在未转义的连字符。使用此正则表达式:
preg_match('~^[a-zA-Z0-9!@#$%^*()_+=.-]+$~', $string)