expression.js 625 B

12345678910111213141516171819202122232425262728
  1. export const isExpression = (str) => {
  2. // 使用正则表达式判断是否符合 {{ 表达式 }} 模式
  3. const regex = /^\s*{{[\s\S]*?}}\s*$/
  4. return regex.test(str)
  5. }
  6. export const extractExpression = (str) => {
  7. const regex = /^\s*{{([\s\S]*?)}}\s*$/
  8. const match = regex.exec(str)
  9. if (match) {
  10. return match[1]
  11. } else {
  12. return ''
  13. }
  14. }
  15. export const executeExpression = (str, args, context) => {
  16. try{
  17. if (context) {
  18. return (Function('args', `return ${str}`).bind(context))(args)
  19. } else {
  20. return (Function('args', `return ${str}`))(args)
  21. }
  22. } catch (e) {
  23. return null
  24. }
  25. }