如何使用表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用表达式相关的知识,希望对你有一定的参考价值。

参考技术A   要看你用在什么地方的表达式了
  给你举个例子吧
  在FastReport报表中,表达式(Expressions)用在很多地方,譬如文本框,排序过滤器等。
  表达式基于报表选择的脚本语言,从菜单[报表]->[选项]打开“报表选项对话框”,切换到“脚本”标签页,选择对应的脚本语言(本系列经验均以C#语言)。注意:变更语言会删除所有脚本("代码"标签页中的脚本)。
  表达式例子:
  数学表达式:2*2=[2*2]
  报表路径:[Report.FileName]
  表达式编辑器
  通过表达式编辑器,能够快速的书写表达式。

  几种引用内容

  引用报表对象
  如上面举例的[Report.FileName]
  引用.NET方法
  在代码标签页添加如下代码,在表达式编辑器中可直接使用如下:
  引用.NET方法:[Demo.MyFunctions.Func1()]
  注意:需要为静态方法。

  引用数据源
  例子:[[学生表.姓名] + "(" + [学生表.性别] + ")"]
  输出:小明(男)
  注意:在表达式中使用的数据列依赖其数据类型,比如不能将字符串类型的列和数字类型的列直接运算,需要转换成相同的类型。
  进阶:使用.NET方法根据生日计算学生的年龄。
  在代码中添加年龄计算方法CaculateAge(),在报表中引用如下:
  [Demo.MyFunctions.CaculateAge([学生表.生日])]

  引用系统变量
  如根据系统变量Date获取当前年份:[[Date].Year]
  引用汇总值
  汇总值是Variant类型,能根据具体情况自动转换类型。
  比如计算男生占总人数的比例:[[男生数]/[总数]]
  引用参数
  访问子参数需带上父参数名称。
  注意:参数能通过属性设置其类型,描述以及表达式。

如何在正则表达式 extjs 中使用 '\'

【中文标题】如何在正则表达式 extjs 中使用 \'\\\'【英文标题】:How to use '\' in the regular expression extjs如何在正则表达式 extjs 中使用 '\' 【发布时间】:2012-04-12 04:50:35 【问题描述】:

我正在使用这个正则表达式:[a-zA-Z0-9\-.,:+*()=\'&_],但是我得到了类似的错误:'unterminated character class' error in this expression' :

演示代码:

Ext.getCmp('field2').addListener(
        beforequery: function (e) 
            if (e.query && e.query.indexOf('?') != -1) 
                var temp = '';
                for(var i=0;i<e.query.length;i++)
                    temp = temp + '['+e.query[i]+ ']';
                
                e.cancel = true;
                var query = new RegExp(String.format('^0',temp.replace(/\?/g, 'a-zA-Z0-9\.,:\+*()=\'&_-\\')));
                this.expand();
                this.store.clearFilter(true);
                this.store.filter(this.displayField, query);
            
        
    );

错误:

1.请有人告诉我这有什么问题,主要是反斜杠。

2.当我们在组合框中输入所需的字符时,它们会被自动选择..所以当我们要输入新字符时,我们必须按侧箭头,否则剩余的字符将被删除...

再次感谢,

拉吉

【问题讨论】:

【参考方案1】:

我认为你必须逃避你的角色类中的一些项目。比如你的反斜杠、星号、加号、括号和句号。

类似[a-zA-Z0-9\\-\.,:\+\*\(\)=\\'&amp;_]

在正则表达式中为特殊字符 [\^$.|?*+() 添加反斜杠会抑制它们的特殊含义,从而允许您按字面意思使用它们。

http://www.regular-expressions.info/reference.html

【讨论】:

嗨@hungerstar,当我使用上述正则表达式时出现此错误:未捕获的语法错误:无效的正则表达式:/^[a-zA-Z0-9-.,:+*()=\ '&_][]/: 未终止的字符类【参考方案2】:

在正则表达式中有 11 个字符需要转义:左方括号 [、反斜杠 \、插入符号 ^、美元符号 $、句点或点 .、竖线或竖线符号 |、问题标记 ?、星号或星号 *、加号 +、左圆括号(和右圆括号)。

【讨论】:

【参考方案3】:

您需要对正则表达式中的某些字符进行转义。所以它看起来像:

var regex = /[a-zA-Z0-9\-\.,:\+\*\(\)=\\'&_]/;  // Note the backslashes

括号、加号、星号和反斜杠是正则表达式中具有特殊含义的众多字符中的一部分。为了从字面上包含它们,您需要使用反斜杠对其进行转义。

【讨论】:

嗨@alpha123,当我使用上面的正则表达式时出现此错误:未捕获的语法错误:无效的正则表达式:/^[a-zA-Z0-9-.,:+*()=\ '&_][]/: 未终止字符类 @rajasti277 我写的时候一定是睡着了。尝试更新版本。

以上是关于如何使用表达式的主要内容,如果未能解决你的问题,请参考以下文章

Lambda如何使用?

如何在javascript中使用表达式查找'/'字符

如何使用正则表达式查找'/*N*/'

如何在正则表达式中使用变量?

如何使用 JavaScript 使用正则表达式验证图像文件扩展名 [重复]

如何使用正则表达式在()之间插入一个单词