Javascript将正则表达式字符作为文字匹配

时间:2018-06-14 14:55:53

标签: javascript vuejs2

我的页面上有一个搜索框功能,关于它的问题是它需要搜索的一些文本是你在regex中使用的字符,例如/(*)\ etc ...

所以需要搜索的其中一行文本的示例是 " erica Test_121#$%^& **(!@#$%^& *()_ +"引号之间。

return this.options.filter(o => o.text.match( this.keyword ))

以上是问题的要点,我将添加以防万一有人有更好的处理方法,我使用Vue 2.5完整代码减去模板下面

Vue.component('autocomplete-input', {
        template: '#autocomplete-input-template',
        props: {
            options: {
                type: Array,
                required: true
            }
        },
        data() {

            return {
                isOpen: false,
                highlightedPosition: 0,
                keyword: ''

            }
        },
        computed: {
            fOptions() {
                const re = new RegExp(this.keyword, 'g')
                return this.options.filter(o => o.text.match( this.keyword ))
            }
        },
        methods: {
            onInput(value) {
                this.highlightedPosition = 0
                this.isOpen = !!value
            },
            moveDown() {
                if (!this.isOpen) {
                    return
                }
                this.highlightedPosition =
                    (this.highlightedPosition + 1) % this.fOptions.length
            },
            moveUp() {
                if (!this.isOpen) {
                    return
                }
                this.highlightedPosition = this.highlightedPosition - 1 < 0 ? this.fOptions.length - 1 : this.highlightedPosition - 1
            }
            ,
            select() {
                const selectedOption = this.fOptions[this.highlightedPosition]
                this.$emit('select', selectedOption)
                this.isOpen = false
                this.keyword =  selectedOption.text 
            }
        }
    })

更新以包含Chrome控制台中显示的错误。

  

[Vue警告] :渲染错误:&#34;语法错误:正则表达式无效:   // erica Test_121#$%^&amp; **(!@#$%^&amp; *()_ + //:无需重复&#34;

0 个答案:

没有答案