我需要在我的ASP.NET MVC 5项目中使用正则表达式进行MVC不显眼的客户端验证。
有效输入是逗号分隔的字符串值,例如:string1,string2,string 3等。
我尝试使用逗号分隔字符串的regEx模式,但它没有按预期工作。谁能告诉我下面的表达方式有什么不对?
[RegularExpression(@"/^[a-zA-Z]{1,20},[a-zA-Z]{1,20}$/",
ErrorMessage = "Please enter comma separated list")]
public string SettingOptions { get; set; }
先谢谢。
答案 0 :(得分:2)
这适用于您的示例string1,string2,string 3等:
^[a-zA-Z0-9 ,]+$
[RegularExpression(@"^[a-zA-Z0-9 ,]+$"]
答案 1 :(得分:0)
试试吧。
"[a-zA-Z]{1,20},[a-zA-Z]{1,20}"
因为^
和$
表示字符串的开头和结尾。
它只允许string1,string2
。
答案 2 :(得分:0)
要将正则表达式与逗号分隔的字符串相匹配,请使用正则表达式,例如:
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
List<AdapterData> mItems;
public Adapter() {
super();
mItems = new ArrayList<>();
AdapterData data = new AdapterData();
data.setName("dummy text");
data.setNameTwo("");
data.setNameThree("");
mItems.add(data);
data = new AdapterData();
data.setName("dummy text");
data.setNameTwo("dummy text");
data.setNameThree("");
mItems.add(data);
data = new AdapterData();
data.setName("");
data.setNameTwo("dummy text");
data.setNameThree("");
mItems.add(data);
data = new AdapterData();
data.setName("");
data.setNameTwo("dummy text");
data.setNameThree("dummy text");
mItems.add(data);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.recycler_view_card_item, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
AdapterData data = mItems.get(i);
viewHolder.mName.setText(data.getName());
viewHolder.mNameTwo.setText(data.getNameTwo());
viewHolder.mNameThree.setText(data.getNameThree());
}
@Override
public int getItemCount() {
return mItems.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
public TextView mName;
public TextView mNameTwo;
public TextView mNameThree;
public ViewHolder(View itemView) {
super(itemView);
mName = (TextView)itemView.findViewById(R.id.layoutName);
mNameTwo = (TextView)itemView.findViewById(R.id.layoutNameTwo);
mNameThree = (TextView)itemView.findViewById(R.id.layoutNameThree);
}
}
}
如果您想删除号码,则可以删除0-9要求。
经过进一步审核后,这个正则表达式可能会出现小的差异,并提出了一个可能更有帮助的替代方案。之前的正则表达式不允许在每个分隔的字符串项中留出空格。
[0-9a-zA-Z]+(,[0-9a-zA-Z]+)*