使用Regex进行TextMesh Pro InputField字符验证

时间:2019-04-12 11:16:05

标签: unity3d

当设置为使用Regex时,如何设置TextMesh Pro InputField的Regex字符串?

我已将其设置为使用正则表达式,使用

inputfield.characterValidation = TMPro.TMP_InputField.CharacterValidation.Regex;

但是无法找出在哪里设置所说的Regex字符串。

谢谢

2 个答案:

答案 0 :(得分:1)

对于需要通过脚本设置输入字段值的用户,可以使用反射来设置私有变量值。

Type inputFieldType = Type.GetType("TMPro.TMP_InputField, Unity.TextMeshPro", true, true);
System.Reflection.FieldInfo regexValueFieldInfo = inputFieldType.GetField("m_RegexValue",System.Reflection.BindingFlags.NonPublic| System.Reflection.BindingFlags.Instance);
regexValueFieldInfo.SetValue(m_InputField, "your regex here");     

答案 1 :(得分:0)

此值必须通过编辑器设置。
您要查找的变量为TMP_InputField.m_RegexValue,但已标记为私有。在“编辑器”功能之外似乎没有设置或定义。

您可以使用TMP_InputValidator定义自定义验证器,也可以按照support thread的建议将TMP和Unity本机InputField共享的.onValidateInput挂钩。